素数比率

来源:互联网 发布:mac怎么更新safari 编辑:程序博客网 时间:2024/05/01 19:14

关于素数在自然数中所占的比率一直都有一个猜想,n以内的素数大概是在log(n)个左右,因此写下了一个小C语言程序进行验证,其中count表示n以内的素数的个数,Logn就是Log(n)的意思,product表示的是Log(n)与count的乘积,理论上应该与n接近,最后ratio表示该乘积与nd的比值,理论上应该接近无限1,代码如下:

#include<stdio.h>#include<stdlib.h>#include<math.h>#define MAX  100000int Judge(int i);int main(void)//主函数 {   //初始条件    int n=2; //从2开始计时    int count=1;float Logn=1;float LognXk=1;float t=2 ;    printf("   n    count       log n         product          ratio\n"); printf("%4d\t %4d\t    %f\t  %f\t   %f\n",n,count,Logn,LognXk,t); int num=1;      for(int n=3;n<=MAX;n=n+2)    { if(Judge(n)) { num++;  count=count+Judge(n); Logn=log(n); LognXk=Logn*count; t=LognXk/n;       printf("%4d\t %4d\t    %f\t  %f\t   %f\n",n,count,Logn,LognXk,t);if(num%10==0)      printf("   n    count       log n         product          ratio\n");       }}            system("pause");    return 0;    }int Judge(int i)       //判断i是不是素数 {    int j=1,x=0,jud=0;    int k=(int)sqrt(i);    for(j=1;j<=k;j=j+2)    {        x=i/j;        int k=x*j;        if(i==k)            jud++;        if(jud>=2)           break;}if(jud<=1)    return 1;    else                return 0;}   


MAX用以调整最大n值,当然也可以不用每一个素数都打印出来,可以适当调整。这种寻找素数的方法到了后期很慢,只适合前期使用。

0 0
原创粉丝点击