Solution of 11417 - GCD

Problem Description
source:https://uva.onlinejudge.org/external/114/11417.html

Given the value of N, you will have to find the value of G. The definition of G is given below:

Here GCD(i, j) means the greatest common divisor of integer i and integer j. For those who have trouble understanding summation notation, the meaning of G is given in the following code: 



G=0;
for(i=1;i<N;i++)
for(j=i+1;j<=N;j++)
{
G+=GCD(i,j);
}
/*Here GCD() is a function that finds
the greatest common divisor of the two
input numbers*/

Input 

The input file contains at most 100 lines of inputs. Each line contains an integer N (1 < N < 501). The meaning of N is given in the problem statement. Input is terminated by a line containing a single zero. This zero should not be processed. 

Output 

For each line of input produce one line of output. This line contains the value of G for corresponding N. 

Sample Input 

10 
100 
500 


Sample Output 

67 
13015 
442011

Solution:

#include <algorithm>
#include <cstdio>
#include <cmath>
#include <cstring>
#include <deque>
#include <fstream>
#include <iostream>
#include <list>
#include <map>
#include <queue>
#include <set>
#include <stack>
#include <string>
#include <vector>
#include<stdio.h>

using namespace std;

int gcd(int x , int y);

int main()
{
    int n,t,i,j,value;
    while(scanf("%d",&n)==1 &&n!=0)
    {
        value=0;
        for(i=1;i<n;i++)
        {
            for(j=i+1;j<=n;j++)
            {
                value+=gcd(i,j);
            }
        }
        printf("%d\n",value);
    }
    return 0;
}

int gcd(int x , int y)
  {
    int z;
    if(y%x==0)
        return(x);
    else
        z=gcd(y%x,x);
   return(z);
  }

No comments:

Post a Comment

Write your comment - Share Knowledge and Experience