gpt4 book ai didi

c - C语言中的哥德巴赫理论

转载 作者:太空宇宙 更新时间:2023-11-04 03:02:14 26 4
gpt4 key购买 nike

我想写一些代码,它接受任何正偶数(大于 2),并给我求和为这个数的最小素数对。我需要这个程序来处理任何长达 9 位的整数。

我的目标是制作看起来像这样的东西:

Please enter a positive even integer ( greater than 2 ) :
10
The first primes adding : 3+7=10.
Please enter a positive even integer ( greater than 2 ) :
160
The first primes adding : 3+157=160.
Please enter a positive even integer ( greater than 2 ) :
18456
The first primes adding : 5+18451=18456.

除了 stdio.h,我不想使用任何库。除了最基本的工具箱:scanf、printf、for、while、do-while、if、else if、break、continue 和基本运算符(<、>、 ==、=+、!=、%、*、/等)。请不要使用其他功能,尤其是 is_prime。

我知道如何根据我的需要限制输入,以便它循环直到给出有效输入。

所以现在我正在尝试找出算法。

我想像这样开始一个 while 循环:

  #include <stdio.h>
long first, second, sum, goldbach, min;
long a,b,i,k; //indices

int main (){

while (1){
printf("Please enter a positive integer :\n");
scanf("%ld",&goldbach);
if ((goldbach>2)&&((goldbach%2)==0)) break;
else printf("Wrong input, ");
}

while (sum!=goldbach){
for (a=3;a<goldbach;a=(a+2))
for (i=2;(goldbach-a)%i;i++)
first = a;
for (b=5;b<goldbach;b=(b+2))
for (k=2;(goldbach-b)%k;k++)
sum = first + second;
}
}

最佳答案

有一个测试素数的函数

int is_prime(unsigned long n)

然后你只需要测试是否agoldbach - a都是质数。您当然可以假设 a <= goldbach/2 .

并且一定要处理goldbach = 4正确。

如果要求不允许定义和使用您自己的函数,请先忽略它们。使用您认为有用和方便的任何功能解决问题。当您有一个使用不允许的功能的有效解决方案时,您就开始用允许的结构替换它。自定义函数可以直接内联,代替return有一个任务,所以而不是 if (is_prime(a)) , 你有代码来确定是否 a是素数而不是 return计算你分配给它的结果 is_prime = result;并测试该变量 if (is_prime) .在您使用库函数的地方,自己重新实现它们 - 效率并不重要 - 然后将它们也内联。

关于c - C语言中的哥德巴赫理论,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10087700/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com