Sgu 102
三种方法:
1、打表
2、用欧拉函数,该方法需要对n进行质因数分解,有公式:
若 ,
則
3、直接模拟+gcd算法,复杂度nlogn
我偷懒用第3种.......
sgu102
1 #include<iostream>
2 using namespace std;
3 int gcd(int a, int b)
4 {
5 if(a>b) return gcd(b,a);
6 if(a==0) return b;
7 return gcd(a,b%a);
8 }
9 int main()
10 {
11 int n,ans=0;
12 cin>>n;
13 if(n==1) ans=1;
14 for(int i=1;i<n;i++)
15 if(gcd(i,n)==1)
16 ans++;
17 cout<<ans<<endl;
18 return 0;
19 }
2 using namespace std;
3 int gcd(int a, int b)
4 {
5 if(a>b) return gcd(b,a);
6 if(a==0) return b;
7 return gcd(a,b%a);
8 }
9 int main()
10 {
11 int n,ans=0;
12 cin>>n;
13 if(n==1) ans=1;
14 for(int i=1;i<n;i++)
15 if(gcd(i,n)==1)
16 ans++;
17 cout<<ans<<endl;
18 return 0;
19 }