POJ3006Dirichlet's Theorem on Arithmetic Progressions

转载请注明出处:優YoU http://user.qzone.qq.com/289065406/blog/1299074452

题目大意

狄利克雷基于等差数列的算法原理

 

设一个等差数列,首元素为a,公差为b

现在要求输入a,b,n ,要求找出属于该等差数列中的第n个素数并输出

 1 //Memory Time 
2 //260K 141MS
3
4 #include<iostream>
5 using namespace std;
6
7 bool judge_prime(int temp)
8 {
9 int k,flag=1;
10 int num=2;
11 if(temp==2)
12 return true;
13 else if(temp==1||temp%2==0)
14 return false;
15 else
16 {
17 for(k=3;k*k<=temp;k+=2)
18 if(temp%k==0)
19 {
20 flag=0;
21 break;
22 }
23 }
24 if(flag)
25 return true;
26 else
27 return false;
28 }
29
30 int main(void)
31 {
32 int a,b,n,i,temp;
33 for(;;)
34 {
35 int flag=0;
36 cin>>a>>b>>n;
37 if(b==0&&n==0||a==0||a>9307||b>346||n>210)
38 break;
39 if(b==0&&judge_prime(a)==false)
40 break;
41 for(i=0;flag!=n;i++)
42 {
43 temp=a+i*b;
44 if(judge_prime(temp))
45 flag++;
46 }
47 cout<<temp<<endl;
48 }
49 return 0;
50 }
[ EXP技术分享博客 ] 版权所有,转载请注明出处: http://exp-blog.com
原文地址:https://www.cnblogs.com/lyy289065406/p/2120488.html