zoukankan      html  css  js  c++  java
  • uva 11417

    GCD
    Input: Standard Input

    Output: Standard Output

    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                              Output for Sample Input

    10

    100

    500

    0

     

    67

    13015

    442011


    Problemsetter: Shahriar Manzoor

    Special Thanks: Syed Monowar Hossain

     1 #include<iostream>
     2 #include<stdio.h>
     3 #include<cstring>
     4 #include<cstdlib>
     5 using namespace std;
     6 const int maxn = 503;
     7 
     8 int G[maxn];
     9 int opl[maxn];
    10 void init()
    11 {
    12     int i,j;
    13     memset(G,0,sizeof(G));
    14     for(i=2;i<maxn;i++) opl[i] = i;
    15     for(i=2;i<maxn;i++)
    16     {
    17         if(opl[i]==i)
    18         {
    19             for(j=i;j<maxn;j=j+i)
    20                 opl[j] = opl[j]/i*(i-1);
    21         }
    22         for(j=1;i*j<maxn;j++)/**opl [ i  ] 此时已经算出**/
    23             G[j*i] = G[j*i] + opl[i]*j;
    24     }
    25     for(i=3;i<maxn;i++)
    26         G[i] +=G[i-1];
    27 }
    28 int main()
    29 {
    30     int n;
    31     init();
    32     while(scanf("%d",&n)>0)
    33     {
    34         if(n==0)break;
    35         printf("%d
    ",G[n]);
    36     }
    37     return 0;
    38 }
  • 相关阅读:
    nios sgdma(Scatter-Gather dma)示例
    关于nios 中printf 的问题
    Nios II 系统时钟timestamp的应用
    DMA在FPGA的应用之我见
    PIO Core
    VGA接口时序约束
    时序分析,重中之重,柳暗花明又一村 搞定美女了问题
    深入浅出VGA和DVI接口
    基于FPGA的VGA可移植模块终极设计
    理解FPGA中的RAM、ROM和CAM;ROM、RAM、DRAM、SRAM、FLASH
  • 原文地址:https://www.cnblogs.com/tom987690183/p/3862795.html
Copyright © 2011-2022 走看看