本題的目標很簡單,就是判斷一個給定的正整數是否素數。
輸入格式:
輸入在第一行給出一個正整數N(<=10),隨后N行,每行給出一個小於231的需要判斷的正整數。
輸出格式:
對每個需要判斷的正整數,如果它是素數,則在一行中輸出“Yes”,否則輸出“No”。
輸入樣例:
2 11 111
輸出樣例:
Yes No
注意:(1)題目要求需要輸入的數是正整數,所以就要考慮1的情況,而1不是素數;
(2)判斷一個數是素數時,只需從2遍歷到這個數的平方根即可,只要出現一個被整除的數即可退出循環break。這樣就可以降低時間復雜度,否則會顯示運行超時的結果。
#include <iostream> #include <cmath> using namespace std; int judgment(int x) { if(x==1) return 0; int flag=1; for(int i=2;i<sqrt(x);i++) { if(x%i==0){ flag=0; break; } } return flag; } int main() { int n,p[10]; cin>>n; for(int i=0;i<n;i++) { cin>>p[i]; if(judgment(p[i])) cout<<"Yes\n"; else cout<<"No\n"; } return 0; }