首页 > 其他 > 详细

hrbust 1328 相等的最小公倍数(数论)

时间:2014-04-26 21:59:43      阅读:657      评论:0      收藏:0      [点我收藏+]

Description

定义An为1,2,…,n的最小公倍数,例如,A1 = 1,A2 = 2,A3 = 6,A4 = 12,A5 = 60,A6 = 60。

请你判断对于给出的任意整数n,An是否等于An – 1

Input

本题有多组测试数据,输入的第一行是一个整数T代表着测试数据的数量,接下来是T组测试数据。

对于每组测试数据:

第1行 包含一个整数n (2 ≤ n ≤ 106)。

Output

对于每组测试数据:

第1行 如果An等于An-1则输出YES否则输出NO。

Sample Input

1

6

Sample Output

YES

/***********************

突然认识到基础不扎实,练习一下打基础,

数论欧几里得算法的简单应用 

题意不说了,很简单,

对于 n ,n为素数时肯定是NO,

对于其他的 n 来说:

如果 n 有一对互质的因子则输出YES,否则输出 NO 。

**********************/

#include <iostream>
#include <stdio.h>
using namespace std;
int gcd(int a,int b)//  求最大公约数
{
    if(a == 0)
        return b;
    int c;
    while(b)
    {
        c = b;
        b = a%b;
        a = c;
    }
    return a;
}
int prime(int n)//  判断素数
{
    int i;
    for(i = 2;i*i<=n;i++)
        if(n%i==0)
            return 0;
    return 1;
}
int main()
{
    int i,t,n,leaf;
    scanf("%d",&t);
    while(t--)
    {
        leaf = 1;
        scanf("%d",&n);
        if(prime(n))//  n是素数是直接输出NO
        {
            printf("NO\n");
            continue;
        }
        for(i = 2;i*i<=n;i++)
        {
            if(n%i==0)
            {
                int p = n/i;
                if(gcd(p,i)==1)
                {
                    leaf = 0;
                    break;
                }
            }
        }
        if(leaf == 1)
            printf("NO\n");
        else
            printf("YES\n");
    }
    return 0;
}


hrbust 1328 相等的最小公倍数(数论),布布扣,bubuko.com

hrbust 1328 相等的最小公倍数(数论)

原文:http://blog.csdn.net/gray_1566/article/details/24529743

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!