您的位置:首页 > 其它

相等的最小公倍数 HRBUST - 1328

2018-03-12 23:28 465 查看
定义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 Input1
6
Sample OutputYES

题解:如果n位素数,输出no;
如果n不为素数,判断n能否分解为n=a*b即可;(a,b均为小于n的正整数)#include <stdio.h>
#include <stdlib.h>
int sushu(int a)
{
int i;
for(i=2;i<a/i;i++)
if(a%i==0) return 0;
return 1;
}
int gcd(int a,int b)
{
if(b==0)return a;
return gcd(b,a%b);
}
int main()
{
int t,n,i,j,f;
scanf("%d",&t);
while(t--){
scanf("%d",&n);
if(sushu(n)){
printf("NO\n");
continue;
}
f=0;
for(i=2;i<n;i++)
if(n%i==0){
j=n/i;
if(gcd(i,j)==1){
f=1;
printf("YES\n");
break;
}
}
if(f==0)printf("NO\n");
}
return 0;
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: