UVA10179 Irreducable Basic Fractions【数论 欧拉函数】

2 篇文章 0 订阅

题目链接:10179 - Irreducable Basic Fractions

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

 

题记:

1.对正整数n,欧拉函数是小于或等于n的数中与n互质的数的数目。此函数以其首名研究者欧拉命名,它又称为Euler's totient function、φ函数、欧拉商数等。 例如φ(8)=4,因为1,3,5,7均和8互质。

2.此题给定一个正整数n,求在[1, n]区间内和n互质的正整数的个数。是欧拉函数裸题。

 

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;
}

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值