C ++ programm, et kontrollida, kas number on algarv või mitte

Näide selle kohta, kas täisarv (kasutaja sisestatud) on algarv või ei kasutata silmuseks ja kui… muud lauset.

Selle näite mõistmiseks peaksid teil olema teadmised järgmistest C ++ programmeerimise teemadest:

  • C ++ kui, kui … muul juhul ja Pesatud, kui … muul juhul
  • C ++ aasale
  • C ++ paus ja jätkake avaldust

Positiivne täisarv, mis jaguneb ainult ühega ja on ise tuntud kui algarv.

Näiteks: 13 on algarv, kuna see jagub ainult 1 ja 13-ga, kuid 15 pole algarv, kuna see jagub arvudega 1, 3, 5 ja 15.

Märkus: 0 ja 1 pole algarvud.

Näide: kontrollige peaarvu

 #include using namespace std; int main() ( int i, n; bool isPrime = true; cout <> n; // 0 and 1 are not prime numbers if (n == 0 || n == 1) ( isPrime = false; ) else ( for (i = 2; i <= n / 2; ++i) ( if (n % i == 0) ( isPrime = false; break; ) ) ) if (isPrime) cout << n << " is a prime number"; else cout << n << " is not a prime number"; return 0; ) 

Väljund

 Sisestage positiivne täisarv: 29 29 on algarv.

See programm võtab kasutajalt positiivse täisarvu ja salvestab selle muutujasse n.

Pange tähele, et tõeväärtuse muutuja isPrime lähtestatakse trueprogrammi alguses.

Kuna 0 ja 1 pole algarvud, kontrollime kõigepealt, kas sisendnumber on üks nendest arvudest või mitte. Kui sisendarv on 0 või 1 , määratakse isPrime väärtuseks false.

Muul juhul jääb isPrime algväärtus muutmata ja forkäivitatakse silmus, mis kontrollib, kas kasutaja sisestatud number on i-ga täiesti jagatav või mitte.

 for (i = 2; i <= n / 2; ++i) ( if (n % i == 0) ( isPrime = false; break; ) ) 

forLoop kestab i == 2kuni i <= n / 2ja suurendab väärtust i 1 võrra iga iteratsiooni.

Silmus lõpeb punktiga, i == n / 2kuna me ei leia n-le ühtegi tegurit, mis ületaks arvu n / 2 . Niisiis, kõik kordused pärast seda n / 2on ülearused.

Kui kasutaja sisestatud number on i-ga täiesti jagatav, on isPrime väärtuseks seatud falseja number ei ole algarv.

Kuid kui sisendi number ei ole kogu tsükli ulatuses i-ga täielikult jagatav, tähendab see, et sisendnumber jagub ainult 1-ga ja see arv ise.

Niisiis, antud arv on algarv.

Juhul n == 2, siis forloop ei joosta ja väärtust isPrime jääb true.

Huvitavad Artiklid...