每日小语
自己思考
即要让第一个质数与这个数减去第一个质数的值都为质数,所以要满足几个条件
这里是否可以用到我之前刚学的自己设置的那个判断质数的函数呢,我觉得完全可以。
//100以内任意大于2的偶数都可写成两个质数之和
#include <stdio.h>
int 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 i=2;i<100;i++)
{
IsPrime(prime);
IsPrime(num-prime);
}
if(IsPrime(prime)==1&&IsPrime(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;
}
gpt还是牛逼
#include <stdio.h>
int 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 + %dn", num, prime, num - prime);
found = 1;
break; // 找到了,则跳出内部循环
}
}
if (found == 0)
{
printf("不成立:%dn", num);
}
}
return 0;
}
之前忽视了这个应该是偶数,还初始设置了一个found=0,改变它的值来判断。
#include <stdio.h>
int 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("不成立:%dn", num);
}
else
{
printf("成立");
}
return 0;
}
以上这是精简代码。
嗯,得加紧学一下两个循环了,目前还是不理解怎么运作的。
#include <stdio.h>
int 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("不成立:%dn", num);
}
else
{
printf("成立");
}
return 0;
}
最后为最精简代码,撒花花~
原文地址:https://blog.csdn.net/qq_74324126/article/details/134742049
本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。
如若转载,请注明出处:http://www.7code.cn/show_25194.html
如若内容造成侵权/违法违规/事实不符,请联系代码007邮箱:suwngjj01@126.com进行投诉反馈,一经查实,立即删除!
声明:本站所有文章,如无特殊说明或标注,均为本站原创发布。任何个人或组织,在未征得本站同意时,禁止复制、盗用、采集、发布本站内容到任何网站、书籍等各类媒体平台。如若本站内容侵犯了原著者的合法权益,可联系我们进行处理。