01/10/2018, 17:42
Code kiểm tra số nguyên tố bị sai kết quả
#include <iostream>
#include<math.h>
using namespace std;
//so nguyen to prime
bool prime(int n);
bool prime(int n){
if (n<2)
return false;
else if(n>2)
{
if (n%2==0)
{
return false; //khong la so nguyen to
}
int i=2;
while(i<=sqrt((float)n))
{
if(n%i==0)
return false; //khong la so nguyen to
else
{
return true; //la so nguyen to
}
i+=1;
}
}
else
return true;
}
int main(){
int n;
cout<<"enter n: ";
cin>>n;
prime(n);
if (prime(n)== true)
cout<<"n is prime";
if (prime(n)== false)
cout<<"n is not a prime";
return 0;
}
mình có đoạn code xem n có phải là số nguyên tố. mình nhập 2 thì là số nguyên tố đúng nhưng nhập 3 thì lại ko phải là số nguyên tố. nhập 9 thì lại là số nguyên tố. không hiểu mình sai ở đâu ạ
Bài liên quan
n%i != 0 không có nghĩa là số nguyên tố
return true
quá sớm: hợp số có thể kick sớm, nhưng phải thử hết từ 2 đến sqrt(n) mới khẳng định là snt được.