函式之判斷素數
阿新 • • 發佈:2019-02-10
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是因為先預設為真了,所以只有在真的條件下才能執行,當迴圈到某個地方已經判斷為假時,就不用再往後了,因為已經有結果了!,