首页 > 其他 > 详细

学习欧拉phi函数的思考

时间:2014-08-12 17:19:34      阅读:278      评论:0      收藏:0      [点我收藏+]

其正确性思考写在了代码片上


忘记一件事:欧拉phi函数的作用是用来求1~n中与n互素的数的个数bubuko.com,布布扣

#include<cstdio>
#include<cstring>
#include<cmath>

int phi[5000000];


///考虑到若所计算的数字是6,当i=2和i=3时都将会进入内层循环,
///一旦进入内层循环就会在该素数的基础上进行欧拉公式的运算
///插入:欧拉公式:phi(n)=n*(1-1/p1)*(1-1/p2)*...(1-1/pn)
///可以想到对于每一个确定的数字n来说,其欧拉公式的运算并不在一次循环中完成,
///但可以证明的一点是,当整个循环完成时,其欧拉公式的运算会完成,换句话说,是能够保证
///phi(n)这个数组中是严格按照欧拉公式算得的正确答案,而非按照其他算法
void phi_table(int n,int* phi)
{
    for(int i=2;i<=n;i++)
    {
        phi[i]=0;
    }
    phi[1]=1;
    for(int i=2;i<=n;i++)
    {
        if(!phi[i])
        {
            for(int j=i;j<=n;j+=i)
            {
                if(!phi[j]) phi[j]=j;
                phi[j] = phi[j]/i*(i-1);
            }
        }
    }
}
int main()
{

    phi_table(10000,phi);
    int n;
    while(scanf("%d",&n))
        printf("%d\n",phi[n]);
}

上述代码中打印欧拉函数值的代码是正确的,但整份代码是为了验证和证明欧拉phi函数,并没有其他用意

学习欧拉phi函数的思考,布布扣,bubuko.com

学习欧拉phi函数的思考

原文:http://blog.csdn.net/u013382399/article/details/38516155

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!