问题描述:
给你一个正整数n,求出不大于n且与n互质的正整数的个数,n <= 1,000,000,000
输入格式:
一个整数n
输出格式:
一个整数,表示计算结果
样例输入:
样例1
7
样例2
12
样例输出:
样例1
6
样例2
4
题目解析:
求φ(n)
φ(n)= (P1-1)/p1 * (P2-1)/P2 * ...*(Px-1)/px
(Px 为n的所有质因数)
ACcode:
#include<bits/stdc++.h>
using namespace std;
long long n,ans;
int main() {
cin>>n;
ans=n;
for(long long i=2; i<=n/i; i++) {
if(n%i==0) {
ans*=(i-1);
ans/=i;
while(n%i==0)n/=i;
}
}
if(n>1) {
ans*=(n-1);
ans/=n;
}
cout<<ans;
}