判断一个数n是不是质数,如果是返回1,否则返回0。这里加入了一个数学优化,只需要判断到根号n就好了。
bool is_prime(int x) { if(x==0||x==1) return 0; int m=int(sqrt(x)+0.5); for(int i=2;i<=m;i++) { if(x%i==0) return 0; } return 1; }
完整代码如下,计数了0-10000的闭区间内有多少个质数。
#include<iostream> #include<cmath> using namespace std; bool is_prime(int x) { if(x==0||x==1) return 0; int m=int(sqrt(x)+0.5); for(int i=2;i<=m;i++) { if(x%i==0) return 0; } return 1; } int main() { int tot=0; for(int i=0;i<=10000;i++) if(is_prime(i)) { tot++; } cout<<tot; return 0; }