孪生素数——C语言实现

孪生素数

之间隔为2的相邻素数,它们之间的距离已经近得不能再近了,就像孪生兄弟一样,也称为双生素数。

  • 中国剩余定理
    有个孪生素数的公式
    在此就不介绍了。
    感兴趣的请自行某度。

AC:

#include 
#define maxn 10000
int main() {
    long i, j, c = 0;
    long twin = 2, t = 0;
    char prime[maxn + 1];
    prime[0] = 0;
    prime[1] = 0;
    for (i = 2; i <= maxn; i++) prime[i] = 1;
    for (i = 2; i * i <= maxn; i++) {
        if (prime[i] == 1) {
            for (j = 2 * i; j <= maxn; j++) {
                if (!prime[j])
                    continue;
                if (j % i == 0)
                    prime[j] = 0;
            }
        }
    }
    for (i = 2; i < maxn; i++) {
        if (prime[i] == 1) {
            c++;
            if (i - 2 == twin) {
                printf("(%d,%d) ", twin, i);
                t++;
                if (t % 5 == 0)
                    printf("\n");
            }
            twin = i;
        }
    }
    printf("\n共有%d个素数,%d对孪生素数! ", c, t);
    getchar();
    return 0;
}

你可能感兴趣的:(C/C++,c语言)