谁顶得住欧豆豆 2023-05-12 07:58 采纳率: 55.6%
浏览 27

C语言程序 哥德巴赫猜想

这是我的代码


#include<stdio.h>

unsigned int isp(unsigned int k,unsigned int n)
{
    unsigned int i;
    for (i = 2; k > i && k % i == 0; i++)
        return 0;
    if ((k * k) <= n && n % k == 0)
        return 0;
    else
        return 1;

}


unsigned int funB(unsigned int n)
{
    unsigned int k, t;
    printf("%d", n);
    for (k = 3; k <= n - k; k += 2)
    {
        t = isp(k, n - k);
         if (t == 1)
            printf("=%u+%u", k, n - k);

    }
     return 0;
}
int main()
{
    unsigned int n;
    printf("输入大于2的偶数:");
    scanf("%u", &n);
    funB(n);
    return 0;}

但是运行效果不对

img

k=15明显是错的,但是又改不对,怎么办呢?大家有什么好方法吗?
顺带一提请不要使用chatgpt回答,我学习的层级太低,看不懂chatgpt的回答,很多专业词汇还没有学到,望请包容(

```

``` )

  • 写回答

4条回答 默认 最新

  • threenewbee 2023-05-12 08:39
    关注

    老老实实用普通方法写吧

    bool is_prime(unsigned int n) {
        if (n <= 1) {
            return 0;
        }
        for (unsigned int i = 2; i * i <= n; ++i) {
            if (n % i == 0) {
                return 0;
            }
        }
        return 1;
    }
    
    
    评论

报告相同问题?

问题事件

  • 修改了问题 5月12日
  • 创建了问题 5月12日