依然是质数表……
用2, 3, 5, 7, 11, 13去筛
然后把101-200之间的质数拷贝出来
从第二项开始扫描一遍,如果前面一项 - 后面一项 == 2,那么就找到了一对孪生质数- #include <stdio.h>
- int main()
- {
- int i, j;
- int sum = 0;
- char buf[201] = {0};
- int div[] = {2, 3, 5, 7, 11, 13};
- /* 17 * 17 > 200 */
- int prime_table[50];
- int pos = 0;
-
- for(i=0; i!=6; ++i)
- for(j=div[i]; j<201; j+=div[i])
- buf[j] = 1;
- for(i=101; i<201; i+=2)
- if(buf[i] == 0)
- prime_table[pos++] = i;
- for(i=1; i!=pos; ++i)
- if(prime_table[i] - prime_table[i-1] == 2)
- sum += 1;
- printf("%d\n", sum);
- return 0;
- }
复制代码 |