c语言验证个把的猜想,请问怎样设计一个C语言程序验证歌德巴赫猜想?

以下的验证程序可以验证一个区间范围内的所有不小于6的偶数是否符合歌德巴赫猜想。

运行示例:

./gdbh 6 20

运行结果:

6 = 3 + 3

8 = 3 + 5

10 = 3 + 7

12 = 5 + 7

14 = 3 + 11

16 = 3 + 13

18 = 5 + 13

20 = 3 + 17

验证程序如下:

#include

#include

#include

#include

int is_prime(int num)

{

int i;

int num2;

num2 = (int)(sqrt(num) + 0.1);

//assume num is a odd, and >= 3;

for (i = 3; i <= num2; i+= 2)

{

if ((num % i) == 0)

return 0;

}

return 1;

}

int main(int argc, char **argv)

{

int first_num, last_num, num, left_num, right_num;

if (argc < 2)

{

fprintf(stderr, "Usage: %s []\n", argv[0]);

return 1;

}

first_num = atoi(argv[1]);

if (argc > 2)

last_num = atoi(argv[2]);

else

last_num = first_num;

if (first_num < 6)

first_num = 6;

if ((first_num % 2) == 1)

first_num++;

if (first_num < 0 || last_num == INT_MAX)

{

fprintf(stderr, "Error: overflow!\n");

return 1;

}

for (num = first_num; num <= last_num; num+=2)

{

int num2 = num/2;

for (left_num = 3; left_num <= num2; left_num+=2)

{

right_num = num - left_num;

if (is_prime(left_num) && is_prime(right_num))

{

break;

}

}

if (left_num <= num2)

{

printf("%d = %d + %d\n", num, left_num, right_num);

}

else

{

printf("Error: the guess is wrong!\n");

return 1;

}

}

return 0;

}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值