Pereiti prie turinio

Pirminiai skaičiai


Rekomenduojami pranešimai

Sveiki, gal žinot, kur šioje programoje klaida?

 

// Programa randa visus intervalo nuo 1 iki n pirminius skaičius
program Eratosteno_rėtis;
 type mas = array[2..50] of integer;
 var i, n, d, j, p: integer;
     sk: mas;
begin
 read(n);
 p := 0;
 for i := 2 to n do
   begin
     d := 0;
     for j := 1 to i do
       if i mod j = 0 then d := d + 1;
     if d >= 2 then begin
                   sk[i] := i;
                   p := p + 1;
            end;
   end;
 write('Pirminiai skaičiai: ');
 for i := 2 to p do
   write(sk[i], ' ')
end.

Redagavo martixz
Nuoroda į pranešimą
Dalintis kituose puslapiuose

Šitoj vietoj:

if d >= 2 then begin
				sk[i] := i;
				p := p + 1;
		 end;

d >= 2 pakeisk į d <= 2

 

Paskalio sintaksės nelabai atsimenu, C# veikiantis kodas atrodo taip:

  for (i = 2; i <= n; i++)
 {
  d = 0;
  for (j = 1; j <= i; j++)
	if (i % j == 0) d = d + 1;
  if (d <= 2) {
				sk[p] = i;
				p = p + 1;
  }
 }

Nuoroda į pranešimą
Dalintis kituose puslapiuose

na sintaksės klaidos : viršuje kur nuskaitinėji n kintamaji tai naudok readln(n); o ne read(); ir pačioje apačioje parašyk Readln; prieš paskutinį end; kad normaliai pamatytum rezultatus

 

EDIT : beto pačioje programoje yra dar klaidų,nes neteisingai išveda... užmesiu akį neužilgo

 

EDIT2 : problema tame kai priskirineji masyvui elemento eiles nr netikslus gaunasi. Tu priskiri sk:=i ,o gi nevisus skaicius praleidzia,todel i gaunasi neiseiles. Bandyk taip p:=p+1; kelti auksicau uz priskyrimo sakini ir apacioje vietoj sk:=i; rasyk sk[p]:=i;

Redagavo MrCX
Nuoroda į pranešimą
Dalintis kituose puslapiuose

Supratau jau kur bėda: ant galo spausdinu visą masyvą, o kai kurie jo laukai juk neužpildyti. Išsitaisiau. :)

Čia ta mano programa randa pirminius skaičius kiek kitokiu būdu, nei ta, kuri pateikiama internete. Jei kam reikia:

// Programa randa visus intervalo nuo 1 iki n pirminius skaičius
program Eratosteno_rėtis;
type mas = array[2..maxint] of integer;
var i, n, d, j, p: integer;
sk: mas;
begin
read(n);
p := 0;
for i := 2 to n do
begin
d := 0;
for j := 1 to i do
if i mod j = 0 then d := d + 1;
if d <= 2 then begin
sk[i] := i;
p := p + 1;
end;
end;
write('Pirminiai skaičiai: ');
for i := 2 to p do
 if sk[i] > 0 then write(sk[i], ' ')
end.

Redagavo martixz
Nuoroda į pranešimą
Dalintis kituose puslapiuose

Prisijunkite prie diskusijos

Jūs galite rašyti dabar, o registruotis vėliau. Jeigu turite paskyrą, prisijunkite dabar, kad rašytumėte iš savo paskyros.

Svečias
Parašykite atsakymą...

×   Įdėta kaip raiškusis tekstas.   Atkurti formatavimą

  Only 75 emoji are allowed.

×   Nuorodos turinys įdėtas automatiškai.   Rodyti kaip įprastą nuorodą

×   Jūsų anksčiau įrašytas turinys buvo atkurtas.   Išvalyti redaktorių

×   You cannot paste images directly. Upload or insert images from URL.

Įkraunama...
  • Dabar naršo   0 narių

    Nei vienas registruotas narys šiuo metu nežiūri šio puslapio.

  • Prisijunk prie bendruomenės dabar!

    Uždarbis.lt nariai domisi verslo, IT ir asmeninio tobulėjimo temomis, kartu sprendžia problemas, dalinasi žiniomis ir idėjomis, sutinka būsimus verslo partnerius ir dalyvauja gyvuose susitikimuose.

    Užsiregistruok dabar ir galėsi:

    ✔️ Dalyvauti diskusijose;

    ✔️ Kurti naujas temas;

    ✔️ Rašyti atsakymus;

    ✔️ Vertinti kitų žmonių pranešimus;

    ✔️ Susisiekti su bet kuriuo nariu asmeniškai;

    ✔️ Naudotis tamsia dizaino versija;

    ir dar daugiau.

    Registracija trunka ~30 sek. ir yra visiškai nemokama.

  • Naujausios temos

  • Karštos temos

×
×
  • Pasirinkite naujai kuriamo turinio tipą...