編寫一個C++算法來測試素數。我的C++代碼如下使用C++查找整數的素數
#include<iostream>
#include<cmath>
using namespace std;
int x,n;
bool isprime(int);
int main()
{
cout<<"Enter prime no"<<endl;
cin>>x;
for (n=2;n<=floor(sqrt(x));n++)
{
if (x==1)
cout<<"not prime"<<endl;
else if (x%n==0)
cout<<"is not prime"<<endl;
else
cout<<"prime"<<endl;
}
}
但是,當我運行programn我的輸出看起來不正確比如我不斷收到「是素數」的時候,答案顯然不是prime.The
else if (x%n==0)
cout<<"is not prime"<<endl;
聲明部分似乎無法妥善執行。任何人都可以向我解釋我的代碼有什麼問題。謝謝
如果您之前沒有使用調試器,現在是瞭解如何使用的正確時機。使用調試器,您可以逐行執行代碼,同時監控變量及其值,並查看變量如何變化。如果你這樣做,你應該很快找到你的問題。 –
您在'for'循環的第一次迭代中做出決定。要找出一個整數是否爲整數,您需要運行整個循環。您確實需要修正格式以獲得更好的視覺代碼流。 – IInspectable
把'x = 9''''''''''不能被'n = 2'整除。因此,您將輸出爲素數。儘管直到現在您還沒有檢查過'n = 3'。想想這裏有什麼問題。提示:也許你想檢查所有的因數,然後決定它是否爲素數。 –