Though prime numbers used to belong to pure mathematics traditionally, they’re more related now to our real world thanks to the development of cryptology and computers in late 20th century.
The public-key cryptography has introduced the concept, ‘it is easy to encode but hard to decode,’ increasing the convenience and reliability of the cryptography system.
Another concept, ‘it is easy to calculate but hard to inverse calculate,’ applies to integer factorization.
RSA cryptography system, which uses such a characteristic of integer factorization, encodes by multiplication of p and q (p*q), a very large prime number each, but needs to know what each p and q exactly is to decode it.
For example, it is easy to multiply two five-digit numbers, but in a given formula, ‘p*q = 1459160519,’ it will take long to find the right p and q pair (34583, 42193).
In reality, the numbers used by RSA are prime numbers of hundreds of digits.
For this reason, two issues have gained importance: primality test, which assesses whether a large number is a prime number or not, and prime factorization algorithms of such large numbers.
The cryptography system in development process by our company’s research lab is also based on irreducible fractions where such algorithms can be applied.
Figure out the problem below in order to help us design a safe and easy to use cryptography system that is right for mobile devices.
When a number N is given, use another number (≤ N) and find out all possible irreducible fractions. (≥ 0, ≤ 1)
For example, if N = 5, the number of possible irreducible fractions are 11 as below.
0 1/5 1/4 1/3 2/5 1/2 3/5 2/3 3/4 4/5 1
Time limits: 1 second(java: 2 seconds)
Input format
Input may include many test cases. The number of test cases, T, is given on the first line of input and then the amount of T of test cases is given in a line. (T ≤ 30) N is given for the first line of each test case. (1 ≤ N ≤ 160)
Output Format
Output the number of cases of possible irreducible fractions for the first line of each test case.
Input Example
1
5
Output Example
11
int GCD(int num1,int num2) { if(num2==0) return num1; else return GCD(num2,(num1%num2)); } int IrreducibleFractions(int N) { if(N==1) return 2;//0,1 else { int i=0; int count=0; for(i=1;i<N;i++) { if(GCD(N,i)==1)//if GCD is 1 means it is not reducible anymore count++; } return count+IrreducibleFractions(N-1); } } int main() { int T,tc,N; scanf("%d", &T); for(tc = 0; tc < T; tc++) { scanf("%d",&N); printf("%d\n",IrreducibleFractions(N)); } }
include <stdio.h> int T,N,l,m,n; //int NA[161]; int GCD(int a, int b) { if (b==0) return a; return GCD(b,a%b); } int main() { scanf("%d",&T); while(T--){ n=0; scanf("%d",&N); for(l=1;l<=N;l++) for(m=2;m<=N;m++) { if(l<m && GCD(l,m)==1) n++; } printf("%d\n",n+2); } return 0; }