18.2.13 codevs1012 最大公约数和最小公倍数问题

1012 最大公约数和最小公倍数问题

2001年NOIP全国联赛普及组

题目描述 Description

输入二个正整数x0,y0(2<=x0<100000,2<=y0<=1000000),求出满足下列条件的P,Q的个数

条件:  1.P,Q是正整数

2.要求P,Q以x0为最大公约数,以y0为最小公倍数.

试求:满足条件的所有可能的两个正整数的个数.

输入描述 Input Description

二个正整数x0,y0

输出描述 Output Description

满足条件的所有可能的两个正整数的个数

样例输入 Sample Input

3 60

样例输出 Sample Output

4

 1 #include <iostream>
 2 #include<math.h>
 3
 4 using namespace std;
 5
 6 int main()
 7 {
 8     int x,y;
 9     cin>>x>>y;
10     int z=y/x;
11     int n=0;
12     if(y%z!=0)
13         cout<<"0"<<endl;
14     else
15     {
16         for(int i=2;i<=z;i++)
17         {
18             if(z%i==0)
19             {
20                 n++;
21                 while(z%i==0)
22                     z/=i;
23             }
24         }
25         cout<<pow(2,n)<<endl;
26     }
27     return 0;
28 }

数论题总是这么又巧又短……

原文地址:https://www.cnblogs.com/yalphait/p/8447513.html

时间: 2024-10-28 21:47:28

18.2.13 codevs1012 最大公约数和最小公倍数问题的相关文章

18.2.13 codevs1212 最大公约数

题目描述 Description 求两个数A和B的最大公约数. 1<=A,B<=2^31-1 输入描述 Input Description 两个整数A和B 输出描述 Output Description 最大公约数gcd(A,B) 样例输入 Sample Input 8 12 样例输出 Sample Output 4 1 #include <iostream> 2 #include<math.h> 3 4 using namespace std; 5 6 long di

codevs1012 最大公约数和最小公倍数问题

题目描述 Description 输入二个正整数x0,y0(2<=x0<100000,2<=y0<=1000000),求出满足下列条件的P,Q的个数 条件:  1.P,Q是正整数 2.要求P,Q以x0为最大公约数,以y0为最小公倍数. 试求:满足条件的所有可能的两个正整数的个数. 输入描述 Input Description 二个正整数x0,y0 输出描述 Output Description 满足条件的所有可能的两个正整数的个数 样例输入 Sample Input 3 60 样例

codevs 1012 最大公约数以及最小公倍数问题 x

题目描述 Description 输入二个正整数x0,y0(2<=x0<100000,2<=y0<=1000000),求出满足下列条件的P,Q的个数 条件:  1.P,Q是正整数 2.要求P,Q以x0为最大公约数,以y0为最小公倍数. 试求:满足条件的所有可能的两个正整数的个数. 输入描述 Input Description 二个正整数x0,y0 输出描述 Output Description 满足条件的所有可能的两个正整数的个数 样例输入 Sample Input 3 60 样例

【C】计算两个整数的最大公约数和最小公倍数

数学知识背景记录: 任何>1的整数都可以写成一个或多个素数因子乘积的形式,且素数乘积因子以非递减序出现. 则整数x,y可以分别标记为:x=p1x1p2x2...pmxm y=p1y1p2y2...pmym (其中p1,p2,....是素数,若有必要素数因子的指数xj或yj可以为0) (1)最大公约数 gcd(x,y)=p1min(x1,y1)p2min(x2,y2)...pmmin(xm,ym) (2)最小公倍数 lcm(x,y)=p1max(x1,y1)p2max(x2,y2)...pmmax

最大公约数和最小公倍数、猴子吃桃问题、百钱百鸡问题、打印1--100的素数

1 //最大公约数和最小公倍数 2 Scanner sc=new Scanner(System.in); 3 if (sc.hasNextInt()) { 4 int n=sc.nextInt(); 5 int m=sc.nextInt(); 6 int a=0; 7 int gy=0; 8 if (m>n) { 9 a=n; 10 }else { 11 a=m; 12 } 13 for (int i = 1; i <=a; i++) { 14 if (n%i==0&&m%i=

002:求两个整数的最大公约数和最小公倍数

求最大公约数可采用辗转相除法,其流程如图所示. 最小公倍数就是两个整数的乘积除以其最大公约数. 1 #include <stdio.h> 2 3 int main() 4 { 5 unsigned long a, b, c=0; //两个整数和临时变量 6 unsigned long lcm=0, gcd=0; //最小公倍数和最大公约数 7 8 while( 1 ) 9 { 10 printf("Please input two positive integers(spacebar

循环-14. 最大公约数和最小公倍数

1 /* 2 * Mian.c 3 * C14-循环-14. 最大公约数和最小公倍数 4 * Created on: 2014年8月1日 5 * Author: Boomkeeper 6 *******测试通过********* 7 */ 8 9 #include <stdio.h> 10 11 /** 12 * 最大公约数 13 */ 14 int greatestCommonDivisor(int M, int N) { 15 int i; 16 for (i = (M < N ?

奇葩的求最大公约数、最小公倍数、分解质因数的做法(C语言)

奇葩的求最大公约数.最小公倍数.分解质因数的做法(C语言) 1 /* 2 最奇葩的求最大公约数与最小公倍数 3 create by laog 4 time 2017年7月27日12:23:14 5 */ 6 7 //两个数的最大公约数 8 //两个数的最小公倍数 9 //将一个正整数分解质因数 --和 2.3.5取余 10 11 #include <stdio.h> 12 13 int main1() 14 { 15 // 3,4 16 //20 17 int v; 18 scanf(&quo

输入两个正整数,求其最大公约数和最小公倍数

1 /* 2 题目:输入两个正整数m和n,求其最大公约数和最小公倍数. 3 例如:12和20的最大公约数是4,最小公倍数是60. 4 */ 5 6 // 导包 7 import java.util.Scanner; 8 9 public class ForTest { 10 public static void main(String[] args) { 11 // 创建键盘输入对象 12 Scanner sc = new Scanner(System.in); 13 14 // 接收键盘输入的