C#-ban kellene egy megadott cikluson belül ( ahol megkaptam már az i számokat) azt megcsinálnom hogy csak az elsőt jelenítse meg, illetve a legnagyobbat. Ezt hogyan kell?
int a, b,i;
Console.Write("Az intervallum alsó határa: ");
a = Convert.ToInt32(Console.ReadLine());
Console.Write("Az intervallum felső határa: ");
b = Convert.ToInt32(Console.ReadLine());
for (i = b; i >= a; i = i - 1)
if(i%2==0)
Console.Write("");
else
if (i % 3 == 0)
Console.Write("");
else
if (i % 4 == 0)
Console.Write("");
else
if (i % 5 == 0)
Console.Write("");
else
Console.WriteLine("{0}", i);
Console.ReadKey();
Így néz ki most...de most az összes prím számot kiadja...hogyan kellene hogy csak az elsőt adja ki?
Console.Write("Az intervallum alsó határa: ");
int a = int.Parse(Console.ReadLine());
Console.Write("Az intervallum felső határa: ");
int b = int.Parse(Console.ReadLine());
int i;
if(a != 1)
for(i = a; i <= b; i++) {
int j = 2;
while(i % j > 0) j++;
if(i % j == 0) break;
}
else i = a;
Console.WriteLine("Talált prímszám: " + i);
Console.ReadKey();
javítom ezt a részt:
while(i % j > 0) j++;
if(i % j == 0) break;
while(i % j > 0 && j <= i * 2) j++;
if(j > i * 2) break;
és ezt el is tudod magyarázni,hogy miért?
és hogy mit jelent a j?
j-vel osztod az aktuális számot az intervallumban.
2-vel kezdődik és maximum az aktuális szám feléig megy. Ez gondolom érthető, mivel ha a felénél nagyobb számmal osztjuk, akkor csak tört lehet. Szóval ha nem talál olyan számot ami pont az osztója és a while ciklus eléri a szám felét, akkor kilép és ezt a számot visszaadja mint prím. Ha az i=15 mondjuk, akkor a j 5-ig számol el és nem lesz 15 felénél nagyobb szám, tehát nem prím 15.
Mondjuk járunk 17-nél. Ismét 2-től léptetjük j-t, egészen eljutunk 8-ig, és nem találunk osztót. 9-nél fog kilépni a ciklus, mert 2 * 9 = 18 > 17. Tehát kaptunk egy prím számot és vége is a programnak.
Annyit kell javítanod, hogy nem i * 2, hanem i / 2 van.
Ha nincs prím szám az intervallumban, akkor is ki fogja írni az utolsó számot. Tehát az i ne b-ig menjen, hanem b+1-ig.
A végén csinálj egy elágazást: ha i > b, akkor nincs prím, különben meg írd ki az i-t.
Hiba nincsen... viszont nem a kívánt eredményt adja:S
A konkrét feladat:Kérjen ba a billentyűzetből egy adott intervallum alsó és felső határát.Írassa ki az intervallumban lévő legnagyobb prím számot.
Kapcsolódó kérdések:
Minden jog fenntartva © 2024, www.gyakorikerdesek.hu
GYIK | Szabályzat | Jogi nyilatkozat | Adatvédelem | Cookie beállítások | WebMinute Kft. | Facebook | Kapcsolat: info(kukac)gyakorikerdesek.hu
Ha kifogással szeretne élni valamely tartalommal kapcsolatban, kérjük jelezze e-mailes elérhetőségünkön!