Miért nem jó ez a prímszám vizsgáló program? C++.
//main.cpp
#include <iostream>
#include <math.h>
using std::cout;
using std::cin;
typedef unsigned long ulong;
typedef unsigned short ushort;
int main(void)
{
ulong number;
bool primeNumber(true);
cout << "Give me a number: ";
cin >> number;
ulong half(number/2);
if(number%2 && number != 1)
{
for(ulong i(3); i < half; i+= 2)
if(i%number)
primeNumber = false;
}
else
primeNumber = false;
if(primeNumber || number == 2)
cout << "The " << number << " is a prime number.";
else
cout << "The " << number << " is not a prime number.";
return 0;
}
Például a 199 a progi szerint nem prím.
A for cikluson belül szereplő if feltétele (number%i==0) kéne hogy legyen.
További problémák: bár beincludeoltad, nem látom, hol használnád a math.h-t. És bár tökéletesen működik, nem használj számokat feltételként. Egyrészt nem vagyok biztos benne, hogy minden fordító köteles a 0-t false-ként, minden mást true-ként kezelni, annak ellenére, hogy még nem futottam össze olyannal, ami nem így tenne, másrész a kód érthetőségét, átláthatóságát jelentősen nehezíti.
"Egyrészt nem vagyok biztos benne, hogy minden fordító köteles a 0-t false-ként, minden mást true-ként kezelni"
Akkor nyugodj meg, mert ez van a szabványban.
És az, hogy rontja-e az olvashatóságot, helyzetfüggő.
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!