c语言哥德巴赫猜想函数 c哥德巴赫猜想函数调用

C语言 哥德巴赫猜想

我的程序不行么,我回答过你一次了

创新互联专注于奉新企业网站建设,成都响应式网站建设公司,商城系统网站开发。奉新网站建设公司,为奉新等地区提供建站服务。全流程按需搭建网站,专业设计,全程项目跟踪,创新互联专业和态度为您提供的服务

#include stdio.h

int is_prime(int n)

{

int i;

for(i = 2; i n ; i++)

{

if(n % i == 0)

break;

}

if(n == i)

return 1;

else

return 0;

}

int main(void)

{

int M;

int i,j;

int flag = 0;

scanf("%d",M);

for(i = M/2; i M; i++)

{

for(j = M/2;j 1; j-- )

if((is_prime(i)is_prime(j)) ((i+j) == M))

{

printf("%d %d\n",j,i);

flag = 1;

break;

}

if(flag == 1)

break;

}

return 0;

}

用c语言验证哥德巴赫猜想,能用到调用函数,简单些的。结果是那种输入一个偶数,输出两个素数。

德国数学家哥德巴赫(Goldbach)在1725年写给欧拉(Euler)的信中提出了以下猜想:任何大于2的偶数,均可表示为两个素数之和(俗称为1+1)。近三个世纪了,这一猜想既未被证明,也未被推翻(即未找到反例)。

分析:

要将整数分解成两部分,然后判断分解出的两个整数是否都为素数。如是,则输出;否则,重新分解、判断。

编写一个程序,在有限范围内(例如4~2000)验证哥德巴赫猜想成立。请注意:这只是有限的验证,不能作为对哥德巴赫猜想的证明。

程序如下:

#include "stdio.h"

#include "math.h"

main( )

{ int fflag(int i);

int i,n;

for(i=4; i=2000; i+=2)

{for(n=2;n if(fflag(n)) /*分别判断两个整数是否均为素数*/

if(fflag(i-n))

{printf("%d=%d+%d\n",i,n,i-n); /*如均为素数则输出*/

break;

}

if(n==i)printf("error %d\n",i);

}

}

int fflag(int i) /*判断整数是否为素数*/

{ int j;

if(i=1) return(0);

if(i==1) return(1);

if(!(i%2)) return(0); /*if no, return 0*/

for(j=3;j=(int)(sqrt((double)i)+1);j+=2)

if(!(i%j)) return(0);

return(1); /*if yes, return 1*/

}

如何用C语言编程哥德巴赫猜想?

#include

void main( )

{

int i, j, k, IsPrime;

for(i = 4; i = 100; i += 2) /*偶数i从4到100*/

{

for(j = 2; j = i / 2; j++) /* 将j从2到i/2进行测试 */

{

for(k = 2, IsPrime = 1; (k = j / 2) IsPrime; k++) /*判断j是否为素数*/

if(j % k == 0) IsPrime = 0;

if(IsPrime) { /*如果j是素数*/

for(k = 2, IsPrime = 1; (k = (i - j) / 2) IsPrime; k++) /*判断i-j是否是素数*/

if((i - j) % k == 0) IsPrime = 0;

if(IsPrime) /*如果i-j也是素数,则找到了i的一个解,将其输出,下一个偶数i*/

{

printf("%d = %d + %d\t", i, j, i - j);

break;

}

}

}

}

}

除了printf与main外,没有用到其他任何的函数,楼主不妨试一试。

验证哥德巴赫猜想 C语言

首先更正一下,哥德巴赫猜想是不小于6的偶数……符合你要求的程序如下,可以运行:

#includestdio.h

int isprime(int n)/*判断n是否为素数的函数*/

{

int j,x;

for(j=2;jn;j++)

if(n%j==0)

{

x=0;

break;

}else

x=1;

return(x);

}

main()

{

int n,i;

printf("请输入一个不小于6的偶数:\n");

scanf("%d",n);

while(n6||n%2!=0)

{

printf("您的输入有误,请重新输入:\n");

scanf("%d",n);

}

for(i=3;i(n/2);i++)

{

if(isprime(i)!=0)

if(isprime(n-i)!=0)

printf("%d可以写成%d与%d之和。\n",n,i,n-i);

}

}

怎么用C语言编程验证哥德巴赫猜想?

哇,这个问题已经被搁置4年了,我看到了就来答一下吧(虽然可能已经没人感兴趣了)

首先,听说哥德巴赫猜想已经被证明了,也就是不存在不成立的情况了,(可点击链接

然后是问题本身,如果真有不符合的,可以在for(m=3;m=k-3;m++)这个循环后面判断一下是否是循环到了尽头,即是否mk-3,如果到了尽头都不符合,那就可以输出不符合了;

至于全部不符合的情况,由于前面已经逐项输出,已经打印的事实已经无法改变,因此就无法只输出说该范围内所有数都不符合,若真的要达到那种效果,可以把你要printf的先用fprintf函数打到临时创建的文件里,然后最后根据判断不符合的个数决定全部打印还是打印一条。总之是用文件读写是一种方法。

最后呢,如果说还要改进的话,有两点可以改进下——1,我从老师那里听来判断素数的条件可以再缩小一点,也就是文中的y=x/2,可以改为 y=sqrt(x)【因为sqrt(x)的平方=x,如果小于y的整数不符合,那么大于y的数也不会符合】;

2,类似于第一点 for(m=3;m=k-3;m++)条件可改为m=k/2;【理由同1】。

呃,就是这样了,不过4年前应该提问者是大一现在应该毕业了吧~哈哈

用C语言验证哥德巴赫猜想

您好,#include "stdio.h"

#include "math.h"//是否是素数

int IsPrime(int n)

{

int i;

for (i=2;in/2;i++)

{

if(n%i==0)

return 0;

}

return 1;

}void Output(int n)

{

int i;

for(i = 2; i=n/2;++i)

{

if(IsPrime(i) IsPrime(n-i))

{

printf("%d=%d+%d\n",n,i,n-i);

break;

}

}

}

void main()

{

Output(107000);

printf("\n");

} IsPrime(int n)和Output(int n) 都是自定义函数,是写的人根据函数内容自己编写的。他们最后都可以在主函数中调用,其中if(IsPrime(i) IsPrime(n-i))和Output(107000) 都是他们的调用。if(IsPrime(i) IsPrime(n-i))的意思是:如果这个数i以及(n-i)都为素数,那么执行下面操作。(当IsPrime(i)为1时是素数,为0时为合数)Output(107000) 的结果为:printf("%d=%d+%d\n",n,i,n-i);即:输出107000这个数符合哥德巴赫猜想,他是哪两个质数的和。


当前标题:c语言哥德巴赫猜想函数 c哥德巴赫猜想函数调用
标题链接:http://scyanting.com/article/hiippi.html