-
Notifications
You must be signed in to change notification settings - Fork 1
/
dengchasushu.cpp
69 lines (66 loc) · 1.02 KB
/
dengchasushu.cpp
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
// 对于长度为k的等差素数数列,
// 它的公差能被小于k的所有素数整除。
#include<iostream>
#include<vector>
using namespace std;
bool isSushu(int s);
int main() {
int k;
int n=0;
int g=1;
vector<int> su;
vector<int> lie(k);
cout<<"请输入等差素数列的长度:"<<endl;
cin>>k;
for(int i=2;i<k;i++) {
if(isSushu(i)) {
su.push_back(i);
}
}
// 以下求出一个最小的能被所有小于序列长度k的素数整除的公差
while(true) {
int n=0;
for(auto sus: su) {
if(g%sus==0) n++;
}
if(n>=su.size()) {
cout<<g<<endl;
break;
}
else {
n=0;
g++;
}
}
/*----以下是输出满足的序列----*/
int ii;
int i=2;
int n1=0;
ii=i;
while(n1<k) {
if(isSushu(ii)) {
lie.push_back(ii);
n1++;
ii+=g;
}
else {
lie.clear();
n1=0;
i=i+1;
ii=i;
}
}
for(auto i1:lie) cout<<i1<<' ';
cout<<endl;
return 0;
}
bool isSushu(int s) {
int u;
for(u=2;u<=s-1;u++) {
if(s!=u && s%u==0) {
return false;
}
}
//printf("%d ",s);
return true;
}