C言語(17)双子素数問題
1591 ワード
説明
素数の範囲内のすべての双晶素数を与えるグループ数を見つけるプログラムを書きます.一般に、双晶素数とは、2つの素数の距離が2であり、近いものはこれ以上近づけない隣接素数を指す.一部の子供靴は問題を見るとプログラムを書き始め、問題をよく見ないで、私たちは問題を読むのがまじめではない子供靴を抑えるために、2つの素数が隣接して1のも双子の素数になります.
入力
第1行はN(0次の試験データのセットはmを与え、mを見つける前のすべての双晶素数を表す.(0
しゅつりょく
各試験データ出力のセットは1行を占め、この挙動mの範囲内のすべての双晶素配列数である.
サンプル入力
サンプル出力
素数の範囲内のすべての双晶素数を与えるグループ数を見つけるプログラムを書きます.一般に、双晶素数とは、2つの素数の距離が2であり、近いものはこれ以上近づけない隣接素数を指す.一部の子供靴は問題を見るとプログラムを書き始め、問題をよく見ないで、私たちは問題を読むのがまじめではない子供靴を抑えるために、2つの素数が隣接して1のも双子の素数になります.
入力
第1行はN(0次の試験データのセットはmを与え、mを見つける前のすべての双晶素数を表す.(0
しゅつりょく
各試験データ出力のセットは1行を占め、この挙動mの範囲内のすべての双晶素配列数である.
サンプル入力
1
14
サンプル出力
4
#include
#include
int func(int);
int main(void)
{
int n, m, i, j, num;
int buf[100000]={0};
scanf("%d", &n);
j=0;
buf[j++]=2;
/* 2 1000000 */
for(i=3; i<1000001; i += 2){
if(func(i) == 1){
buf[j++] = i;
}
}
while(n--){
num=0;
scanf("%d", &m);
for(i=1; i<=m; i++){
if(buf[i]>m){
break;
}
if((buf[i]-buf[i-1] == 1) || (buf[i]-buf[i-1] == 2)){
num++;
}
}
printf("%d
", num);
}
return 0;
}
/* */
int func(int n)
{
if(n<2){
return -1;
}
int i;
for(i=2; i<=sqrt(n); i++){
if(n%i==0){
return 0;
}
}
return 1;
}
#include #include using namespace std; bool vis[1000010]; int main() { int n=1000010; int m =sqrt(n+0.5); int c=0; for(int i =2;i<=m;i++) if(!vis[i]) { for (int j = i*i;j<=n;j+=i) vis[j]=1; } cin>>n; while(n--) { int count=0,m; cin>>m; for(int i=3;i3) cout<