• 博客园logo
  • 会员
  • 众包
  • 新闻
  • 博问
  • 闪存
  • 赞助商
  • HarmonyOS
  • Chat2DB
    • 搜索
      所有博客
    • 搜索
      当前博客
  • 写随笔 我的博客 短消息 简洁模式
    用户头像
    我的博客 我的园子 账号设置 会员中心 简洁模式 ... 退出登录
    注册 登录
DementRock
   首页          管理     

Sgu 102

三种方法:

1、打表

2、用欧拉函数,该方法需要对n进行质因数分解,有公式:

若 n = \prod_{p\mid n} p^{\alpha_p},

則\varphi(n) = \prod_{p\mid n} p^{\alpha_p-1}(p-1) = n\prod_{p|n}\left(1-\frac{1}{p}\right) 

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 }


posted @ 2010-02-16 22:44  DementRock  阅读(350)  评论(0)    收藏  举报
刷新页面返回顶部
博客园  ©  2004-2025
浙公网安备 33010602011771号 浙ICP备2021040463号-3