NYOJ 26 孪生素数问题 打表法
2014-02-10 22:53
330 查看
原题链接
简单的打表法,直接上ac代码。
#include <stdio.h>
#include <math.h>
#define MAX 1000000 + 2
int a[MAX], b[MAX];
void CountPrime(){
int i, j, t = sqrt(MAX);
a[0] = a[1] = 1; //'1'代表不是素数
for(i = 2; i != t; ++i){
if(a[i]) continue;
for(j = i * i; j < MAX; j += i)
a[j] = 1;
}
}
void CountM(){
for(int i = 3; i != MAX; ++i){
if(!a[i] && !a[i - 1]) ++b[i];
else if(!a[i] && !a[i - 2]) ++b[i];
b[i] += b[i - 1];
}
}
int main(){
CountPrime();
CountM();
int t, m;
scanf("%d", &t);
while(t-- && scanf("%d", &m))
printf("%d\n", b[m]);
return 0;
}
简单的打表法,直接上ac代码。
#include <stdio.h>
#include <math.h>
#define MAX 1000000 + 2
int a[MAX], b[MAX];
void CountPrime(){
int i, j, t = sqrt(MAX);
a[0] = a[1] = 1; //'1'代表不是素数
for(i = 2; i != t; ++i){
if(a[i]) continue;
for(j = i * i; j < MAX; j += i)
a[j] = 1;
}
}
void CountM(){
for(int i = 3; i != MAX; ++i){
if(!a[i] && !a[i - 1]) ++b[i];
else if(!a[i] && !a[i - 2]) ++b[i];
b[i] += b[i - 1];
}
}
int main(){
CountPrime();
CountM();
int t, m;
scanf("%d", &t);
while(t-- && scanf("%d", &m))
printf("%d\n", b[m]);
return 0;
}
相关文章推荐
- NYOJ 26 孪生素数问题 打表法
- NYOJ-26 孪生素数问题
- NYOJ26 孪生素数问题
- nyoj 26 孪生素数问题
- NYOJ 26 孪生素数问题
- NYOJ 题目26 孪生素数问题
- NYOJ 26 孪生素数问题
- nyoj 26 孪生素数问题
- NYOJ 26 孪生素数问题
- nyoj 26 孪生素数问题
- nyoj 26-孪生素数问题
- NYoj 26 孪生素数问题
- nyoj 26-孪生素数问题
- NYOJ 26 孪生素数问题
- 孪生素数问题 nyoj 26
- nyoj 26 孪生素数问题
- nyoj26 孪生素数问题
- NYOJ-26 孪生素数问题
- NYOJ 26 孪生素数问题
- nyoj-26-孪生素数问题