poj2478 又一歐拉公式的運用

來源:互聯網
上載者:User
Farey Sequence
Time Limit: 1000MS Memory Limit: 65536K
Total Submissions: 7881 Accepted: 2957

Description

The Farey Sequence Fn for any integer n with n >= 2 is the set of irreducible rational numbers a/b with 0 < a < b <= n and gcd(a,b) = 1 arranged in increasing order. The first few are 
F2 = {1/2} 
F3 = {1/3, 1/2, 2/3} 
F4 = {1/4, 1/3, 1/2, 2/3, 3/4} 
F5 = {1/5, 1/4, 1/3, 2/5, 1/2, 3/5, 2/3, 3/4, 4/5} 

You task is to calculate the number of terms in the Farey sequence Fn.

Input

There are several test cases. Each test case has only one line, which contains a positive integer n (2 <= n <= 106). There are no blank lines between cases. A line with a single 0 terminates the input.

Output

For each test case, you should output one line, which contains N(n) ---- the number of terms in the Farey sequence Fn. 

Sample Input

23450

Sample Output

1359

題目大意就是求Fi集合中元素的個數,其中Fi集合的元素滿足下列條件

形如a/b,且0<a<b<=i, gcd(a,b)=1 

很明顯,這題就是歐拉公式的運用,關於歐拉公式可查看下這篇文章

http://www.cnblogs.com/ACShiryu/archive/2011/08/04/poj2407.html

對於這題,可以先求出以每一個小於m的數為分母的數的個數,即也是與該數互素的數的個數,也就是求的phi[i];

然後再每一個phi都加起來

題目就是比較簡單的歐拉運用,1A

參考代碼:

#include<iostream>
#include<cstdlib>
#include<cstdio>
#include<cstring>
#include<algorithm>
#include<cmath>
using namespace std;
int phi[1000005];
int main()
{
int i , j ;
memset ( phi , 0 ,sizeof ( phi ) ) ;
for ( i = 2 ; i <= 1000000 ; i ++ )
{//篩選求phi
if ( ! phi [i] )
{
for ( j = i ; j <= 1000000 ; j += i )
{
if ( ! phi [j] )
phi [j ] = j ;
phi [j] = phi [j] / i * ( i - 1 ) ;
}
}
}
int n ;
while ( cin >> n , n )
{
__int64 sum = 0 ;
for ( i = 2 ; i <= n ; i ++ )
sum += phi [i] ;
cout<<sum<<endl;
}
return 0;
}

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.