如果您无法下载资料,请参考说明:
1、部分资料下载需要金币,请确保您的账户上有足够的金币
2、已购买过的文档,再次下载不重复扣费
3、资料包下载后请先用软件解压,在使用对应软件打开
ACMSteps2.12解题报告#include<iostream>#include<cmath>usingnamespacestd;intmain(){inta[100],i,j,k,n,flag,d;while(cin>>n){for(i=0;i<n;i++){d=0;cin>>a[i];if(a[i]<2){d++;break;}}if(d==1)break;else{k=0;for(i=0;i<n;i++){cin>>a[i];flag=0;for(j=2;j<=sqrt((float)a[i]);j++)if(a[i]%j==0){flag++;break;}if(flag==0)k++;}}cout<<k<<endl;}return0;}这是一个求素数的问题,所谓素数就是只有1和本身两个约数。而做题时我用到的却是非素数的概念:能够被2到根号n只见任意一个数正处的就是非素数。我的做法是:把输入的数去磨2到根号n之间的数,如果磨得的结果为零就做一个标记,说明此数为非素数之,计数器不动。如果自始至终磨得结果都不为零,就把计数器加1。最后就统计了素数的个数。在这个问题中我当时还考虑了一个问题,就是要不要考虑这个数到底在不在素数与非素数的范围之类。因为比2小的数就不是素数,也不是非素数。我最后还是把这个判断的代码给写进去了,AC了。后来我把这行代码注销掉,结果还是AC了,也就是说,这个判断要不要无所谓。