zoukankan      html  css  js  c++  java
  • 哈理工OJ-1328 相等的最小公倍数

    题目描述
    定义 An 为 1,2,…,n 的最小公倍数,例如,A1=1,A2=2,A3=6,A4=12,5=60,A6=60。
    请你判断对于给出的任意整数 n,An 是否等于 An–1。如果 An 等于An-1则输出 YES 否则输出 NO。

    分析
    由最小公倍数的定义我们可以知道,如果 An=An-1 则 An-1 可以被 n 整除,首先,对于一个数 n 如果是素数,那么 An 不等于 An-1,其次,我们分析 n,如果对于小于 n 的每一对因子即 n=a*b(a<n 且 b<n),如果 a,b 不互素,那么 gcd(a,b)>1,则 lcm(a,b)=n/gcd(a,b)<n(lcm表示最小公倍数),那么很显然,如果 n 的每一对因子都是不互素的,则 n 不能整除 An-1,否则可以整除 An-1,因为 n 的因子肯定小于等于 n-1,所以其每一对因子的最小公倍数肯定可以整除 An-1,所以这道题就 0 变成了判断 n 是否有互素的一对因子,所以我们只要枚举 n的每一对因子,然后计算其最大公约数是否为 1,如果有一对互素的因子则输出 YES,否则输出 NO。

     1 #include <iostream>
     2 #include <stdio.h>
     3 #include<math.h>
     4 using namespace std;
     5 
     6 int gcd(int a,int b)//求最大公约数
     7 {
     8     if(a==0)
     9         return b;
    10     int c;
    11     while(b)
    12     {
    13         c=b;
    14         b=a%b;
    15         a=c;
    16     }
    17     return a;
    18 }
    19 int main()
    20 {
    21    int t;
    22     scanf("%d",&t);
    23     while(t--)
    24     {
    25         int n;
    26         scanf("%d",&n);
    27         if(n==2)
    28         {
    29             printf("NO
    ");continue;//特殊情况
    30         }
    31         int temp=sqrt(n),p,falg=0;
    32         for(int i=2;i<=temp;i++)//遍历所有的因子对
    33             if(n%i==0)
    34             {
    35                 p=n/i;
    36                 if(gcd(p,i)==1)//判断是否互质
    37                 {
    38                     falg=1;
    39                     break;
    40                 }
    41             }
    42 
    43         if(falg)
    44             printf("YES
    ");
    45         else
    46             printf("NO
    ");
    47     }
    48     return 0;
    49 }
    正解代码
  • 相关阅读:
    jquery $.post specification
    鸟语2010.5.5
    不使用ubuntu代理
    how to check network's stablity?
    python float decimal issue
    how to check network's stablity?
    session的作用是什么?
    bottle json issure
    我强烈建议,不要想念komdo的ctrl+r
    how to count files in directory
  • 原文地址:https://www.cnblogs.com/vivider/p/3650602.html
Copyright © 2011-2022 走看看