此次记录一道ACM很简单的一道题。ios
连接描述数组
题目意思呢是:输入三个数。a,d,n;
而后造成一个序列:a,a+d;a+2d;a+3d…………
从中寻找素数,输出第n个素数。函数
素数呢,就是只能整除1和它自己的数。
贴个断定素数的代码:spa
bool sushu(int a) { float a1; a1=a; int i,k; k=sqrt(a1);//sqrt()函数为求根号函数,须要加头文件:#include<cmath> if(a==1)//此处注意,我以前就是忘了有a=1这种状况,而提交失败。a=1时,直接返回false,不是素数。 return false; for(i=2;i<=k;i++) { if(a%i==0) return false; } return true; }
作这道题个人思路呢是这样的。先建一个数组k,而后对a,a+d,a+2d……一个个的断定,是不是素数,如果,则存入数组。那么结果只要输出k[n-1]就能够了。.net
如下是完整代码:3d
#include<iostream> #include<cmath> using namespace std; bool sushu(int a);//判断是否素数,是返回true,否返回false int main() { int a,b,c; while(1) { int i; cin>>a>>b>>c; if(a==0&&b==0&&c==0) break; int *k=new int[c]; for(i=0;i<c;) { if(sushu(a)) { k[i]=a; i++; } a=a+b; } cout<<k[c-1]<<endl; } return 0; } bool sushu(int a) { float a1; a1=a; int i,k; k=sqrt(a1); if(a==1) return false; for(i=2;i<=k;i++) { if(a%i==0) return false; } return true; }
这道题虽然很简单,可是我一开始作的时候仍是遇到了很多的问题。大可能是因为我本身的基础不够扎实形成的。
好比不知道如何断定是不是素数。(这个很简单,知道素数的定义应该就明白了)。
还有一个是,我不习惯调用函数,总是把全部代码都写在主函数中,又麻烦,又不易理解,容易错。不是一个好习惯,之后改正。code