粗略验证“素数定理”

贪狼 posted @ 2012年12月29日 14:59 in 纯粹数学 with tags 素数 高斯 c/c++ 数论 笔记 , 2218 阅读

前几日读了卢昌海的《黎曼猜想漫谈》,写的挺好,虽然我这个数学系的也看不大懂。其中有个关于高斯的故事让我崇拜不已:高斯在15岁的时候就发现了粗略的“素数定理”,真不愧是“数学王子”。刚好现在学习C语言,就粗略的验证一下高斯发现的粗略的“素数定理”:

/*
 * 粗略检验素数分布密度与指数函数倒数的关系
 */

#include <stdio.h>
#include <math.h>

#define LENGTH 1000

int prime_judge(long num)
{
    long temp = sqrt(num) + 1;
    long i, test = 0;

    for (i = 2; i <= temp ; i++) {
	if (num%i == 0)
	    test++;
    }

    return test;
}

int print_test(void)
{
    long interval_begin, i;
    long prime_num = 0;
    double destiny, exponent;

    printf("Please input an integer: ");
    scanf("%ld", &interval_begin);
    if (interval_begin == 0)
	return 1;

    for (i = interval_begin; i <= interval_begin+LENGTH; i++) {
	prime_num += !prime_judge(i);
    }

    destiny = (double) prime_num/LENGTH;
    exponent = 1/log(interval_begin+LENGTH/2.0);

    printf("%f %f\n", destiny, exponent);

    return 0;
}

int main(void)
{
    while (print_test() == 0)
	;

    return 0;
}

只验证了较小的数,但结论还是很清晰的:

素数分布密度和指数函数倒数之差虽然不是越来越小的,但是总体上差数保持在一个较小的范围,再次膜拜一下高斯。


登录 *


loading captcha image...
(输入验证码)
or Ctrl+Enter