天天看點

數論 - 歐拉函數的運用 --- poj 3090 : Visible Lattice Points 

Visible Lattice Points

Time Limit: 1000MS

Memory Limit: 65536K

Total Submissions: 5636

Accepted: 3317

Description

A lattice point (x, y) in the first quadrant (x and y are integers greater than or equal to 0), other than the origin, is visible from the origin if the line from (0, 0) to (x, y) does not pass through any other lattice point. For example, the point (4, 2) is not visible since the line from the origin passes through (2, 1). The figure below shows the points (x, y) with 0 ≤ x, y ≤ 5 with lines from the origin to the visible points.

數論 - 歐拉函數的運用 --- poj 3090 : Visible Lattice Points 

Write a program which, given a value for the size, N, computes the number of visible points (x, y) with 0 ≤ x, y ≤ N.

Input

The first line of input contains a single integer C (1 ≤ C ≤ 1000) which is the number of datasets that follow.

Each dataset consists of a single line of input containing a single integer N (1 ≤ N ≤ 1000), which is the size.

Output

For each dataset, there is to be one line of output consisting of: the dataset number starting at 1, a single space, the size, a single space and the number of visible points for that size.

Sample Input

Sample Output

Source

<a href="http://poj.org/searchproblem?field=source&amp;key=Greater+New+York+2006">Greater New York 2006</a>

Mean: 

 在第一象限中,輸入一個n,然後要你統計在(0&lt;=x&lt;=n,0&lt;=y&lt;=n)的範圍内,有多少可視點。

所謂的可視點,即:從(0,0)出發到達(x1,y1),中間未與任何整點相交的點。

analyse:

 通過分析,我們會發現:隻要x和y互質,那麼(x,y)就是可視點。我們隻要求得[0,0]~[x,y]内滿足x和y互質的點(x,y)的個數,那麼問題就可迎刃而解。歐拉函數就是用來解決小于n的數中有多少個數與n互質。

Time complexity:O(n)

Source code:

  

繼續閱讀