哈理工OJ-1328 相等的最小公倍数
2014-04-07 20:09
302 查看
题目描述
定义 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。
正解代码
定义 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。
#include <iostream> #include <stdio.h> #include<math.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 main() { int t; scanf("%d",&t); while(t--) { int n; scanf("%d",&n); if(n==2) { printf("NO\n");continue;//特殊情况 } int temp=sqrt(n),p,falg=0; for(int i=2;i<=temp;i++)//遍历所有的因子对 if(n%i==0) { p=n/i; if(gcd(p,i)==1)//判断是否互质 { falg=1; break; } } if(falg) printf("YES\n"); else printf("NO\n"); } return 0; }
正解代码
相关文章推荐
- 哈理工oj 1328-相等的最小公倍数解题报告
- 哈理工 hrbust 1328 相等的最小公倍数
- 哈理工 hrbust 1328 相等的最小公倍数
- Hrbust1328 相等的最小公倍数 (筛素数,素因子分解)
- HRBUST 1328 相等的最小公倍数
- [原]Hrbust1328 相等的最小公倍数 (筛素数,素因子分解)
- Hrbust1328 相等的最小公倍数 (筛素数,素因子分解)
- [原]Hrbust1328 相等的最小公倍数 (筛素数,素因子分解)
- Hrbust1328 相等的最小公倍数 (筛素数,素因子分解)
- hrbust 1328 相等的最小公倍数(数论)
- Hrbust1328 相等的最小公倍数 (筛素数,素因子分解)
- hrbust 1328 相等的最小公倍数【暴力打表找规律】
- hrbust 1328 相等的最小公倍数(数论)
- 相等的最小公倍数 HRBUST - 1328
- 哈理工OJ 1328
- 哈理工OJ 1627 猪猪罐(完全背包)
- 哈理工oj 1385-Leyni, LOLI and Toasts II解题报告-多重背包的二进制解法
- 哈理工oj(acm.hrbust.edu.cn) 1066【二维dijkstra】
- 哈理工OJ 2111 Apple(简单模拟)
- 哈理工OJ-2330-Final Ugly English【栈】