c语言程序题求助

2024-11-27 01:20:01
推荐回答(2个)
回答1:

#include 
#include 
int isSuShu(int i)    //判断是否为素数
{
    int n,m;
    m = sqrt(i);
    for(n=2; n<=m; n++)
    {
        if(i%n == 0)
            break;
    }
    if(n>=m+1) return 1;
    else    return 0;
}
int main()
{
    int x,i,k;
    printf("请输入任一大于2的偶数:");
    scanf("%d", &x);
    for(i=2; i<=x/2; i++)
    {
        if(isSuShu(i) == 1)
        {
            k = x-i;
            if(isSuShu(k) == 1)
            {
                printf("\t%d可以为素数%d、%d的和\n", x, i, k);
            }
        }
    }
    return 0;
}
这是我写的“任一大于2的偶数都可表示为两个素数之和”
你再添加个循环2~21内运行就行了。

回答2:

#include "stdio.h"
// 判断x是否为素数
int isSuShu(int x) {
int i;
if (x == 2) 
return 1;
if (x == 1 || x % 2 == 0) 
return 0;
for (i = 3; i * i <= x; i += 2) {
if (x % i == 0)
return 0;
}
return 1;
}

void main()
{
for (int x=1; x<21; x++)
{
for (int y=1; y<21; y++)
{
if ( isSuShu(x) && isSuShu(y) )
{
if (x+y<=21)
{
printf("x = %2d, y = %2d时,x + y = %2d <= 21\n", x, y, x+y);
}
}
}
}

}