输出指定范围内的素数并验证一定范围内的歌德巴赫猜想

/*------------------------------------------------------------------------ 
   
    Author:                 AaronBai
    Project:                输出指定范围内的素数并验证一定范围内的歌德巴赫猜想 
    State: 
    Creation   Date:         2006-10-24
    Description:              
  ------------------------------------------------------------------------*/ 
#include   <stdio.h> 
# define M 10001 // 定义验证范围

// 函数CreatPrimeList():生成素数表
void CreatPrimeList(int PrimeList[])
{
int i,j;
// 将PrimeList的各元素设置为从0开始的正整数
for(i=0;i<M;i=i+1)
PrimeList[i]=i;
// 分别从表中去掉已经确定的各素数的倍数(将其置为0)
i=2;
while(i<M/2)
{
for(j=i+1;j<M;j=j+1)
if(PrimeList[j]!=0 && PrimeList[j]%PrimeList[i]==0)
PrimeList[j]=0;
// 确定下一个素数的位置
i=i+1;
while(PrimeList[i]==0)
i=i+1;
}
}

// 函数NextPrimeNumber():求下一个素数
int NextPrimeNumber(int p,int PrimeList[])
{
p=p+1;
while(PrimeList[p]==0)
p=p+1;
return PrimeList[p];
}




//歌德巴赫猜想验证:在从4到M的范围内验证哥德巴赫猜想
void  prove(int PrimeList[])
{
 int x,p;

// 对从4到M的所有偶数验证哥德巴赫猜想
x=4;
while(x<M)
{
   // 检查偶数减去一个素数后的剩余部分是否仍为素数
  p=PrimeList[2];
while(p<=x/2 && PrimeList[x-p]==0)
p=NextPrimeNumber(p,PrimeList);
// 输出检查结果
if(p>x/2) // 找到了一个不能分解为两个素数和的偶数

printf("伟大发现:哥德巴猜想是错误的!/n");
else // PrimeList[x-p]!=0,分解成功


printf("%d=%d+%d/n",x,p,x-p);
// 检查下一个偶数
x=x+2;
}
//return 0;


}


// 主函数:输出指定范围内的素数并验证一定范围内的歌德巴赫猜想 
int main()
{
int PrimeList[M]; // 说明存放素数表的数组
int i;
// 建立素数表
CreatPrimeList(PrimeList);
// 打印出M范围内的所有素数
  printf("打印出所有的M内的素数/n");
  for(i=2;i<M;i++)

   { if(PrimeList[i]!=0)
       
        
            printf("%d/n ",PrimeList[i]);
          
        }
//歌德巴赫猜想验证:在从4到M的范围内验证哥德巴赫猜想
  printf("在从4到M的范围内验证哥德巴赫猜想/n");
 prove(PrimeList);

}

 
 
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值