HDU How many prime numbers
#include<iostream> #include<cmath> using namespace std; int main() { int n,b,s,ans,i,j,flag; while(cin>>n) { ans=0; for(i=0;i<n;i++) { cin>>b; flag=1; for(j=2;j<=sqrt(b*1.0);j++){ //转换成double,直接在b+1也行 if(b%j==0) {flag=0;break;}//如果有一个你能除尽的,直接跳出 } if(flag) ans++; } cout<<ans<<endl; } return 0; }
如果更优的话,有网上其他做法 http://www.cnblogs.com/Su-Blog/archive/2012/08/27/2659145.html
这个提醒了我们解决一个超时的方法 http://www.acmerblog.com/hdu-2138-how-many-prime-numbers-3287.html
装逼做法:
#include<iostream> #include<stdio.h> #include<cmath> using namespace std; int prime(int n) { if(n==2||n==3) return 1; int i; for(i=2;i<=sqrt((double)n);i++) { if(n%i==0) return 0; } return 1; } int main() { int n; while(scanf("%d",&n)!=EOF) { int i; int sum=0; int temp; for(i=0;i<n;i++) { scanf("%d",&temp); if(prime(temp)==1) sum++; } printf("%d\n",sum); } return 0; }