zoukankan      html  css  js  c++  java
  • 最小公倍数的对数

    对于我们来说求两个数的LCM(最小公倍数)是很容易的事,现在我遇到了一个问题需要大家帮助我来解决这问题,问题是:给你一个数n,然后统计有多少对(a<=b) LCM(a,b)=n;例如LCM(a,b)=12; 即(1,12),(2,12),(3,12),(4,12),(6,12),(12,12),(3,4),(4,6);

    Input

    输入数组有多组,每组数据包含一个整数n(n<=10^9);

    Output

    输出每组数据的对数。

    Sample Input

    2
    3
    4
    6

     

    Sample Output

    2
    2
    3
    5

     

     

     #include <stdio.h>
    #include <algorithm>
    #include <math.h>
    int main()
    {
        int n,i,j,k,s[1000];
       while(~scanf("%d",&n))
        {
            int k=0,i,j,sum=0;
           for(i=1;i<=sqrt(n);i++)
            {
                if(n%i==0)
                {
                    s[k++]=i;
                    if(n/i!=i)
                       s[k++]=n/i;
                }
            }
            for(i=0;i<k;i++)
            {
               for(j=i+1;j<k;j++)
                   if(s[i]/__gcd(s[i],s[j])*s[j]==n)  (两条横线)
                        sum++;
            }
           printf("%d
    ",sum+1);
        }
        return 0;
    }
  • 相关阅读:
    DDD 领域驱动设计
    IOC 控制反转
    WCF
    Lucene 全文检索引擎
    Redis
    Cache 缓存
    return
    PHP中empty();和isset();的区别.
    sql 简单用语
    关系型数据库
  • 原文地址:https://www.cnblogs.com/zcy19990813/p/9702832.html
Copyright © 2011-2022 走看看