网站建设立项ppt,天津网站推广优化,东莞建材网站建设,深圳网站建设定制每日小语
活下去的诀窍是#xff1a;保持愚蠢#xff0c;又不能知道自己有多蠢。——王小波
自己思考
即要让第一个质数与这个数减去第一个质数的值都为质数#xff0c;所以要满足几个条件
1.abc
2.a为质数
3.b为质数
这里是否可以用到我之前刚学的自己设置的那个判断…每日小语
活下去的诀窍是保持愚蠢又不能知道自己有多蠢。——王小波
自己思考
即要让第一个质数与这个数减去第一个质数的值都为质数所以要满足几个条件
1.abc
2.a为质数
3.b为质数
这里是否可以用到我之前刚学的自己设置的那个判断质数的函数呢我觉得完全可以。
//100以内任意大于2的偶数都可写成两个质数之和
#include stdio.hint IsPrime(int num)//输入参数是 num即要判断的数
{int isPrime 1;for (int i 2; i num; i) {if (num % i 0) {isPrime 0;break;}}return 0;
}int main()
{int num,prime;for(int i2;i100;i){IsPrime(prime);IsPrime(num-prime);}if(IsPrime(prime)1IsPrime(num-prime)1) {printf(哥德巴赫猜想成立);}else{printf(不成立);} return 0;
} 敲写的过程中我不知道如何用if来判断虽然程序没有报错可他给的结果是“不成立”。
gpt解答疑惑
1.IsPrime函数没有正确返回结果。在该函数中我设置了一个名为isPrime的本地变量来表示是否为质数但在函数末尾将其值始终返回为0所以无法正确判断是否为质数。你应该根据isPrime变量的值返回正确的结果。
int IsPrime(int num)
{int isPrime 1;for (int i 2; i num; i) {if (num % i 0) {isPrime 0;break;}}return isPrime;
}return的不是0了变成了Isprime
gpt还是牛逼
#include stdio.hint IsPrime(int num)// 输入参数是 num即要判断的数
{int isPrime 1;for (int i 2; i num; i) {if (num % i 0) {isPrime 0;break;}}return isPrime;
}int main()
{int num;for (int i 4; i 100; i 2) // 因为猜想是任意大于2的偶数所以从4开始遍历偶数{num i;int found 0; // 用于标记是否找到了两个质数之和等于当前偶数for (int prime 2; prime num / 2; prime) // 在质数范围内搜索两个质数之和{if (IsPrime(prime) 1 IsPrime(num - prime) 1) {printf(哥德巴赫猜想成立%d %d %d\n, num, prime, num - prime);found 1;break; // 找到了则跳出内部循环}}if (found 0){printf(不成立%d\n, num);}}return 0;
}之前忽视了这个应该是偶数还初始设置了一个found0改变它的值来判断。
然后还是需要两个for循环来判断这一点我还是不理解。
#include stdio.hint IsPrime(int num)// 输入参数是 num即要判断的数
{int isPrime 1;for (int i 2; i num; i) {if (num % i 0) {isPrime 0;break;}}return isPrime;
}int main()
{int num;int found 0; for (int i 4; i 100; i 2) {num i;for (int prime 2; prime num / 2; prime){if (IsPrime(prime) 1 IsPrime(num - prime) 1) {found 1;break; }}} if (found 0){printf(不成立%d\n, num);}else{printf(成立);}return 0;
}
以上这是精简代码。
第一个循环用来遍历 4 到 100 之间的所有偶数。
第二个循环来验证是否存在两个质数的和等于 num。
嗯得加紧学一下两个循环了目前还是不理解怎么运作的。
#include stdio.hint IsPrime(int num)// 输入参数是 num即要判断的数
{int isPrime 1;for (int i 2; i num; i) {if (num % i 0) {isPrime 0;break;}}return isPrime;
}int main()
{int num;int found 0; for (int num 4; num 100; num 2) {for (int prime 2; prime num / 2; prime){if (IsPrime(prime) 1 IsPrime(num - prime) 1) {found 1;break; }}} if (found 0){printf(不成立%d\n, num);}else{printf(成立);}return 0;
}
最后为最精简代码撒花花~