欧拉函数

试题描述

我们都知道欧拉函数f(n)表示的意思是:小于或等于n的正整数中与n互质的数的数目。例如f(8)=4,因为1,3,5,7均和8互质。给定一个正整数n,输出f(n)的值。

输入
一个正整数n
输出
一个正整数表示f(n)的值
输入示例
8
输出示例
4
其他说明
输入的n在int范围内。
 
 1 #include <iostream>
 2 
 3 using namespace std;
 4 
 5 bool Euler(int a,int n)   //Euler就是欧拉的意思 
 6 {
 7     int i;
 8     if(n%2==0 && a%2==0) return 0; //因为下面的循环当 i==1 || i==2 时不执行 
 9     for(i=2;i<a;i++)
10     {
11         if(a%i==0 && n%i==0) return 0;   //判断是否互质 
12     }
13     //printf("%d
",a);
14     return 1;
15 }
16 int main()
17 {
18     int n;
19     scanf("%d",&n);
20     int ans=0;
21     for(int i=1;i<n;i++)
22     {
23         if(Euler(i,n)) ans++;   //如果互质ans++ 
24     }
25     printf("%d",ans);
26     //system("pause");
27     return 0;
28 }
欧拉函数
原文地址:https://www.cnblogs.com/YXY-1211/p/5162086.html