zoukankan      html  css  js  c++  java
  • hdoj 3501 -Calculation 2 (欧拉函数)

    Calculation 2

    Time Limit: 2000/1000 MS (Java/Others)    Memory Limit: 32768/32768 K (Java/Others)
    Total Submission(s): 3305    Accepted Submission(s): 1367


    Problem Description
    Given a positive integer N, your task is to calculate the sum of the positive integers less than N which are not coprime to N. A is said to be coprime to B if A, B share no common positive divisors except 1.
     
    Input
    For each test case, there is a line containing a positive integer N(1 ≤ N ≤ 1000000000). A line containing a single 0 follows the last test case.
     
    Output
    For each test case, you should print the sum module 1000000007 in a line.
     
    Sample Input
    3 4 0
     
    Sample Output
    0 2
     
    Author
    GTmac
     
    Source
     
    Recommend
    zhouzeyong   |   We have carefully selected several similar problems for you:  3507 3506 3505 3504 3499 
    <= n中与n 互质数的和 phi[a]*a/2;
    #include <cstdio>
    #define MOD 1000000007
    typedef long long LL;
    LL euler(LL n)
    {
        LL i; 
        LL eu= n;
        for(int i=2; i*i <= n; i++)
        {
            if(n%i ==0)
            {
                eu= eu*(i-1) /i;
                while(n %i==0)
                    n/= i;
            }
        }
        if(n >1) eu= eu* (n-1) /n;
        return eu;
    }
    int main()
    {
        LL n;
        while(scanf("%lld", &n), n)
        {
            LL ans= n&1? (n+1)/2*n : n/2*(n+1);
            ans= ans- euler(n) *n/2;
            printf("%lld
    ", (ans-n)%MOD);
        }
        return 0;
    }
  • 相关阅读:
    选择结构
    算法和流程图
    存储信息和信息运算
    计算机组成原理
    计算机硬件组装
    认识计算机硬件
    认识操作系统
    DOS简介
    计算机软件知识
    易企cms截取字段方法
  • 原文地址:https://www.cnblogs.com/soTired/p/5399683.html
Copyright © 2011-2022 走看看