运用c语言,-验证哥德巴赫猜想
#include "stdio.h"
//计132--139074043
long next_prime(long number)
{
int flag=1;
long i;
for (;flag;number++)
{
for (i = 2,flag = 0; i <=number/ 2; i++)
{
if (number%i == 0)
{
flag = 1;
break;
}
}
}
return number-1;
}
long judge_print(long input)
{
long i,flag=input;
for(i=2;i<=input/2;i=next_prime(i+1))
{
if (input-i==next_prime(input-i))
{
printf("\n\t\t%ld=%ld+%ld",input,i,input-i);
flag=0;
}
}
return flag;
}
int main()
{
long start,end,temp,flag;
printf("本程序将验证哥德巴赫猜想\n"
"即任一大于2的偶数都可写成两个素数之和\n"
"(小范围内,太大了你的CPU会力不从心)\n\n\n输入两个整数,本程序将列出这两个数之间所有偶数的分解");
printf("\n===============================================================");
printf("\n\t\t请输入起始数字:");
scanf("%ld",&start);
temp=start<2?2:start;
printf("\n\t\t请输入终止数字:");
scanf("%ld",&end);
printf("\n---------------------------------------------------------------");
for(temp=(temp%2==0)?temp:temp+1;temp<=end||flag;temp+=2)
{
flag=judge_print(temp);
/*
for(i=2;i<=temp/2;i=next_prime(i+1))
{
if (temp-i==next_prime(temp-i))
printf("\n%ld=%ld+%ld",temp,i,temp-i);
}
*/
printf("\n\t\t++++++++++++");
}
if(flag==0)
{
printf("\n==========================RESULT===============================\n");
printf("\n在%ld到%ld中大于2的偶数,均符合哥德巴赫猜想\n",start,end);
printf("\n加油!换个范围试一试\n");
printf("\n===========================END=================================\n");
}
//~~~~~~~~~~~~~~~~~~~~~~~~~我是欢乐的分隔符~~~~~~~~~~~~~~~~~~~~~~~~~
//保守估计,这一段代码几乎永远也不会运行,少年,你还是死了这条心吧
else//else???你做梦,几乎不会else的!!!
{
printf("恭喜!哥德巴赫猜想已经被你证伪\n在%ld到%ld的偶数中",start,end);
printf("%ld违反了哥德巴赫猜想\n赶快带着你的成果去领取菲尔兹奖吧`(*∩_∩*)′\n",flag);
}
//~~~~~~~~~~~~~~~~~~~~~~~~~我是欢乐的分隔符~~~~~~~~~~~~~~~~~~~~~~~~~
return 0;
}