求助
查看原帖
求助
703715
ZacharyG楼主2022/3/24 16:03
#include<stdio.h>
#include<math.h>
bool is_prime(int n)
{
    int i;
    for (i = 2; i < sqrt(n); i++)
    {
        if (n % i == 0)
            return false;
    }
    return true;
}

void print(int num)           //一次print
{
    int x,y;
    for (x = 3; x <= num / 2; x++)                           //在[3,num/2]内找到一素数x
    {
        if ( is_prime(x) == true)       //一个偶数分解为的第一个素数
        {
            for (y = num / 2; y < num; y++)                 //在[num/2,num)内找到一素数y
            {
                if (is_prime(y) == true && x + y == num)     //一个偶数分解为的第二个素数
                {
                    
                    if (num == 6)
                        printf("%d=%d+%d\n", num, x, y);
                    else if (x < y)
                    {
                        printf("%d=%d+%d\n", num, x, y);
                        //通过改变循环条件中的判断条件来直接退出多层循环比多个break更方便。 
                        x = num;
                        y = num;
                    } 
                        
                }
                    
            }
        }
    }
}

int main()
{
    int N;
    printf("请输入一个大于等于6的偶数:");
    scanf("%d", &N);
    printf("4=2+2\n");
    for (int i = 6; i <= N; i += 2)
    {
        print(i);
    }
    return 0;
}

求助

2022/3/24 16:03
加载中...