Valaki elmagyarázná nekem?
#include <iostream>
using namespace std;
int main()
{
double i, j;
double szam;
cin>>szam;
for ( i = 2; i < szam; i++ )
{
for ( j = 2; j <= i/2; j++ )
{
if ( ! ( i % j ) ) break; //Ezt a sort nem
//értem.
}
if ( j > i / 2 ) cout << i << endl;
}
system("pause>nul");
return 0;
}
valaki elmagyarázná nekem azt a sort.Ez a progi a prímszámokat írja ki.Az se lenne baj ha valaki az egész kódot elmagyarázná mert nem teljesen világos.
előre is kösz!
i%j -> maradékos osztás. Ha osztható, nullát ad vissza, egyébként a maradékot.
!(i%j) -> ugyanaz negálva. Ha nem osztható, akkor nullát ad, ha osztható, akkor nem nullát.
A pírmszámokat írja ki? Dehát abból végtelen sok van :)
Amúgy az a sor:
if ( ! ( i % j ) ) break;
A break gondolom világos, ha a feltétel igaz, kilép a belső ciklusból.
A feltétel pedig az, hogy !(i%j). A % operátor kifejezése azt az értéket veszi fel, hogy az első tagot egészosztással elosztva a másodikkal mekkora maradékot kapsz. Tehát 3%5 az 3, 10%3 az 1, 17%15 az 2.
A ! logikai tagadás, ami a logikai ellentettjét veszi az operandusának.
Az operandusa itt az i%j kifejezés, ami egy szám. Számból logikai érték úgy lesz, hogy ha 0 akkor hamis, egyébként igaz.
Oszthatóságnál a 0 azt jelenti, hogy osztható, hiszen maradék nélkül megvan benne. Tehát ha osztható, akkor hamis, ha nem osztható, akkor igaz. Ezt tagadod le.
Azaz: ha osztható, akkor kilép a ciklusból.
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!