首页 > 其他 > 详细

欧拉工程第72题:Counting fractions

时间:2015-09-27 22:39:09      阅读:276      评论:0      收藏:0      [点我收藏+]

题目链接:https://projecteuler.net/problem=72

 

真分数;n/d

d ≤ 1,000,000时候的真分数有多少个

 

public class P72{
    void run(){
        int max_n = 1000000;
        long[] phi = cal_phi(max_n+1);
        long sum=0;
        phi[1] = 0;
        for(int i =1;i<=max_n;i++)
            sum+=phi[i];
        System.out.println(sum);
    }
//    303963552391
//    194ms
    long[] cal_phi(int max_n){
        long[] phi = new long[max_n+1];
        for(int i=1;i<max_n;i++){
            phi[i] += i;
            for(int j =2*i;j<max_n;j+=i)
                phi[j]-=phi[i];
        }
        return phi;
    }
    public static void main(String[] args){
        long t0 = System.currentTimeMillis();
        new P72().run();
        long t1= System.currentTimeMillis();
        System.out.println((t1-t0)+"ms");
    }
}

 

欧拉工程第72题:Counting fractions

原文:http://www.cnblogs.com/theskulls/p/4842791.html

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