C语言中的循环问题 素数求法

img


这个程序为什么运行不起呢 就是想求范围内的素数 并求孪生素数级两个素数相差二


#include <stdio.h>

// 判断n是不是素数
int is_prime(int n)
{
    for (int i = 2; i * i <= n; i++)
    {
        if (n % i == 0)
        {
            return 0;
        }
    }
    return 1;
}

int main()
{
    int c, d;
    printf("Please input c,d (c > 2):\n");
    scanf("%d %d", &c, &d);
    int count = 0;
    int last_prime = 2; // 上一个素数

    // 迭代找素数
    for (int i = c; i <= d; i++)
    {
        if (is_prime(i))
        {
            if (i - last_prime == 2)
            {
                printf("%d %d\n", last_prime, i);
                count++;
            }
            last_prime = i;
        }
    }

    printf("total = %d\n", count);
    return 0;
}

int prime = 0;  //目前素数
int lastPrime = 1;  //上一个素数
int n = 0;
printf("请用户输入最大值:");
scanf("%d", &n);
for (int i = 3; i < n; i++)
{
    int juDge = 0;  //判断是否素数
    for (int j = 2; j < i; j++)
    {
        if (i % j == 0)
        {
            juDge = 1;
        }
    }
    if (!juDge)
    {
        prime = i;
        if (prime - lastPrime == 2)
        {
            printf("%d-%d\n", lastPrime, prime);
            lastPrime = i;
        }
        else
        {
            lastPrime = i;
        }    
    }
}