Problem C: 判斷素數
Description
寫一個判斷素數的函數,在主函數輸入一個整數,輸出是否是素數的消息。
Input
一個數
Output
如果是素數輸出prime 如果不是輸出not prime
#include <iostream>
using namespace std;
int main()
{
int prime(int);
int n;
cin>>n;
if(prime(n))
cout<<"prime"<<endl;
else
cout<<"not prime"<<endl;
return 0;
}
int prime(int n)
{
int p=1,i;
for(i=2;i<=n/2&&p==1;i++)
if(n%i==0)
p=0;
return p;
}
素數是隻能被1和它本身整除的一類特殊的數,所以,要編寫一個程序尋找這類數,如果一個數還能被其他的數整除,就不符合要求;
輸入的數據默認爲素數,所以定義一個變量爲真(int p=1);
檢查時只檢查到該數的一半就可以(因爲一個數分爲兩個數的乘積時,一定一個大一個小),只要能被其他數整除,即餘數爲0(if(n%i==0)),那就可以判斷爲假(p=0;);
之所以在循環語句中有&&p==1是因爲先默認爲真了,所以只有在真的條件下才能運行,當循環到某個地方已經判斷爲假時,就不用再往後了,因爲已經有結果了!,