C语言的一个题,大神求解!

2025-01-04 00:31:52
推荐回答(2个)
回答1:

#include 
int prime(int n)
{
    int i, flag = 1;
    if(n < 2)return 0;
    for(i = 2;i <=n/2;i++)
        if(n % i == 0) {
            flag = 0;
            break;
        }
     return flag;
}

int validEvenNumber(int n)
{
    int j;
    for(j = 2;j <= n/2;j++)
        if(prime(j) && prime(n - j))
            return 1;
    return 0;
}

int main()
{
    int n, i, j, flag = 1;
    scanf("%d", &n);
    for(i = 6;i <= n;i+=2)
    {
        if(!validEvenNumber(i)) {
            flag = 0;
            break;
        }
    }
    if(flag) {
        printf("从6到n之间的所有偶数都可以分解为两个素数之和\n");
    } else {
        printf("存在偶数: %d 使其不能分解为两个素数之和\n", i);
    }
}

回答2:

#include 
#include 
int isPrime(int n)
{
    int i;
    for(i = 2; i <= (int)sqrt(n); i ++)
        if(n%i == 0) return 0;
    return 1;
}
void check(int n)
{
    int i;
    for(i = 2; i < n; i ++)
    {
        if(isPrime(i) && isPrime(n-i))
        {
            printf("%d=%d+%d\n", n, i, n-i);
            return ;
        }
    }
}
void func(int n)
{
    int i;
    for(i = 6; i <= n; i +=2)
    {
        check(i);
    }
}
int main()
{
    int n;
    scanf("%d",&n);
    func(n);
    return 0;
}