调用函数判断一个数是否为素数(传统+优化)
#include <iostream> #include <cmath> using namespace std; bool prime1(int n) //传统的判断素数。 { if(n==1) return 0; if(n==2) return 1; int t=(int)sqrt(n); for(int i=2;i<=t;i++) if(n%i==0) return 0; return 1; } bool prime2(int n)//第二种先判断是否能被奇数整除,注意对2要单独判断 { if(n==1) return 0; int t=(int)sqrt(n); for(int i=3;i<=t;i+=2) if(n%i==0) return 0; return 1; } int main() { int n; while(cin>>n) { if(prime1(n)) cout<<"prime1 : YES"<<endl; else cout<<"prime1 : No"<<endl; if(n%2==1||n==2) { if(prime2(n)) cout<<"prime2 : YES"<<endl; else cout<<"prime2 : NO"<<endl;//写这一条考虑n是1的情况 } else cout<<"prime2 : NO"<<endl; } return 0; }
运行: