问题描述:狄利克雷定理的有关问题,具体问题是给定一个起始值a,累加数d以及需要寻找的第n位质数,最后输出第n位质数的值。
解题思路:先按步骤计算出起始值后面的一些位数,然后判断计算出来的各位数是否是质数,若是则放入一个数组中,最后在这个数组中找到那个第n位质数
code(C)
#include<stdio.h>
#include<math.h>
//判断某个数是否为质数的函数,可收藏今后套用
bool isPrime(int num){
int m;
if(num==1) return false;
if(num==2) return true;
for(m=2;m<(int)sqrt((double)num);m++){
if(num%m==0)
break;
}
if(num%m==0)
return false;
else
return true;
}
int main()
{
int i,j,a,d,n,t[215];
int s[3000];
while(1){
i=1;j=1;
scanf("%d%d%d",&a,&d,&n);
if(a==0&&d==0&&n==0)
return 0;
while(j<=n){
s[i]=a+d*(i-1);
if(isPrime(s[i])){
t[j]=s[i];
j++;
}
i++;
}
printf("%d\n",t[n]);
}
}