vijos P1131

vijos P1131_第1张图片

vijos P1131_第2张图片

vijos P1131_第3张图片

 1 #include <iostream>
 2 using namespace std;
 3 
 4 
 5 int max(int x, int y)
 6 {
 7 int temp;
 8 
 9 
10 if (x<y) {temp=x;x=y;y=temp;}
11 
12 
13 
14   if(y==0){return x;}
15   else{return max(y,x%y);}
16 
17 }
18 
19 
20 
21
22 int main()
23 {
24      int x,y,p,sum,temp;
25      sum=0;
26      
27      cin>>x;
28      cin>>y;
29 
30 
31      for (p=x;p<=y;p++)
32         {
33           
34           if  ( (x*y)%p==0  )
35            {
36                 temp=x*y/p;
37                        
38                 if(   max(p,temp) ==x ){sum++;}
39            }
40         
41         }
42 
43 cout<<sum;
44 
45 
46 return 0;
47 }

 

 

这题重点是   两个数的最大公约数和最小公倍数乘积==两数的乘积


对p进行循环,如果 x*y%p==0 则 说明有可能    然后 用 求最大公约数的函数验证
如果最大公约数是x,就sum++ 

 

你可能感兴趣的:(vijos P1131)