zoukankan      html  css  js  c++  java
  • GCD hdu2588

    GCD

    Time Limit: 2000/1000 MS (Java/Others)    Memory Limit: 32768/32768 K (Java/Others)
    Total Submission(s): 897    Accepted Submission(s): 400


    Problem Description
    The greatest common divisor GCD(a,b) of two positive integers a and b,sometimes written (a,b),is the largest divisor common to a and b,For example,(1,2)=1,(12,18)=6.
    (a,b) can be easily found by the Euclidean algorithm. Now Carp is considering a little more difficult problem:
    Given integers N and M, how many integer X satisfies 1<=X<=N and (X,N)>=M.
     
    Input
    The first line of input is an integer T(T<=100) representing the number of test cases. The following T lines each contains two numbers N and M (2<=N<=1000000000, 1<=M<=N), representing a test case.
     
    Output
    For each test case,output the answer on a single line.
     
    Sample Input
    3
    1 1
    10 2
    10000 72
     
    Sample Output
    1
    6
    260
     
     
     1 #include <iostream>
     2 #include <algorithm>
     3 #include <cstdio>
     4 #include <math.h>
     5 
     6 using namespace std;
     7 int fun(int n)//传入一数,返回此数的欧拉函数,用素数表会更快
     8 {
     9     int sum=n;
    10     int i;
    11     for(i=2; i*i<=n; i++)
    12     {
    13         if(n%i==0)
    14         {
    15             sum=sum/i*(i-1);
    16             while(n%i==0)n/=i;
    17         }
    18     }
    19     if(n!=1)
    20     {
    21         sum=sum/n*(n-1);
    22     }
    23     return sum;
    24 }
    25 
    26 int main()
    27 {
    28     int t,i,n,m,ans,size;
    29     scanf("%d",&t);
    30     while(t--)
    31     {
    32         scanf("%d%d",&n,&m);
    33         ans=0;
    34         size=sqrt(n+0.5);
    35         for(i=1; i<=size; i++)
    36         {
    37             if(n%i==0)
    38             {
    39                 if(i>=m)
    40                     ans+=fun(n/i);
    41                 if(i!=n/i&&n/i>=m)ans+=fun(i);
    42             }
    43         }
    44         printf("%d
    ",ans);
    45     }
    46 }
    View Code
     
    Source
  • 相关阅读:
    不容易系列之二
    Unicode 和Ansi下的字符和字符串转换问题
    转:sizeof()用法汇总
    转:MultiByteToWideChar和WideCharToMultiByte用法详解
    addTarget原理
    SDWebImage底层实现原理
    自动释放池的原理
    最近比较烦
    练车记录
    明天出去游乐场玩耶。
  • 原文地址:https://www.cnblogs.com/ERKE/p/3693283.html
Copyright © 2011-2022 走看看