素数问题

此次记录一道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

相关文章
相关标签/搜索