码迷,mamicode.com
首页 > 其他好文 > 详细

欧拉(BC)

时间:2015-12-12 23:16:47      阅读:334      评论:0      收藏:0      [点我收藏+]

标签:

技术分享技术分享
输入样例
1 1
2 1
3 2
输出样例
2
2
2
f(x)打表找规律的 fx=x+1,fn(x)=x+n+1;然后用欧拉公式
 1 #include <iostream>
 2 #include <cstdio>
 3 using namespace std;
 4 
 5 __int64 euler(__int64 n)
 6 {
 7      __int64 i;
 8      __int64 res = n, a = n;
 9      for(i = 2;i*i <= a; ++i)
10      {
11          if(a%i == 0)
12          {
13              res -= res / i; 
14              while(a % i == 0) 
15              {
16                 a /= i;
17              }
18          }
19      }
20      if(a > 1) res -= res/a;//存在大于sqrt(a)的质因子
21      return res;
22 }
23 
24 int main()
25 {
26     __int64 n, x;
27     while (~scanf("%I64d%I64d", &n, &x))
28     {
29         __int64 ans = n + x + 1;
30         printf("%I64d\n", euler(ans));
31     }
32     return 0;
33 }

 


欧拉(BC)

标签:

原文地址:http://www.cnblogs.com/a1225234/p/5041899.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!