• 不互质的和


    不互质的和

    给定一个正整数 NN.

    你的任务是找到 11 到 N-1N1 中与 NN 不互质的数的和。

    输入

    对于每个测试用例,有一行包含正整数 N(1 ≤N ≤1000000000)N(1N1000000000)。

    当 N=0N=0 的时候,输入结束。

    输出

    对于每个测试用例,您应该在一行中打印 sumsum mod 10000000071000000007。

    样例

    输入

    3
    4
    0

    输出

    0
    2
     1 #include<bits/stdc++.h>
     2 using namespace std;
     3 typedef long long ll;
     4 const int mod=1e9+7;
     5 ll Euler(ll n)
     6 {
     7     ll m=sqrt(n+0.5);
     8     ll ans=n;
     9     for(int i=2;i<=m;i++)
    10     {
    11         if(n%i==0)
    12         {
    13             ans=ans/i*(i-1);         
    14         }
    15         while(n%i==0) 
    16         n/=i;
    17     }
    18     if(n>1)
    19     ans=ans/n*(n-1);
    20     
    21     return ans;
    22 }
    23 int main()
    24 {
    25     ll n;
    26     while(cin>>n && n)
    27     {
    28         ll ans=Euler(n);
    29         ll sum=((1+(n-1))*(n-1))/2;
    30         ans=n*ans/2;
    31         sum-=ans;
    32         sum=sum%mod;
    33         cout<<sum<<endl;        
    34     }
    35     return 0;
    36 }
  • 相关阅读:
    KDJ回测
    利用网易获取所有股票数据
    利用东方财富网获取股票代码
    python发邮件
    用指针向数组插入元素
    冒泡排序
    Hadoop的安装与配置
    关于执行memcached报错问题
    tomcat Linux安装
    网易CentOS yum源
  • 原文地址:https://www.cnblogs.com/mzyy1001/p/13636470.html
Copyright © 2020-2023  润新知