A
fraction
m / n
is
basic
if 0
≤
m < n
and it is
irreducible
if gcd(
m,
n
)
= 1.
Given
a positive integer
n
,
in
this problem you are required to find out the number of
irreducible
basic fractions
with denominator
n
.
For example, the set of all
basic
fractions
with denominator 12,
before reduction to lowest terms,
is
Reduction yields
Hence there are only the following 4 irreducible basic fractions with denominator 12
Input
Each line of the input contains a positive integer n (< 1000000000) and the input terminates with avalue 0 for n (do not process this terminating value).
Output
For each n in the input print a line containing the number of irreducible basic fractions with denominator n.
Sample Input
12
123456
7654321
0
Sample Output
4
41088
7251444
问题链接:UVA10179 Irreducable Basic Fractions
问题简述:(略)
问题分析:
这是一个数论问题。
给定一个正整数n,求在[1, n]区间内和n互质的正整数的个数。直接使用欧拉函数进行计算。
程序说明:(略)题记:(略)
参考链接:欧拉函数
AC的C语言程序如下:
/* UVA10179 Irreducable Basic Fractions */
#include <stdio.h>
/* 欧拉函数 */
int phi(int n)
{
int ret=1, i;
for(i=2; i*i<=n; i++) {
if(n%i == 0) {
n /= i;
ret *= i-1;
while(n%i == 0) {
n /= i;
ret *= i;
}
}
}
if(n>1)
ret *= n-1;
return ret;
}
int main(void)
{
int n;
while(~scanf("%d", &n) && n)
printf("%d\n", phi(n));
return 0;
}