hdu 4497 数论

关键点:利用算术基本定理可以重新定义整数a和b的最大公约数和最小公倍数。

详解:http://m.blog.csdn.net/blog/u011328934/24499897

 1 #include <iostream>
 2 #include <cstring>
 3 #include <cstdio>
 4 using namespace std;
 5 
 6 void solve( int k )
 7 {
 8     int ans = 1;
 9     for ( int i = 2; i * i <= k; i++ )
10     {
11         if ( k % i == 0 )
12         {
13             int cnt = 0;
14             while ( k % i == 0 )
15             {
16                 cnt++;
17                 k = k / i;
18             }
19             ans = ans * 6 * cnt;
20         }
21     }
22     if ( k > 1 )
23     {
24         ans = ans * 6;
25     }
26     printf("%d\n", ans);
27 }
28 
29 int main ()
30 {
31     int t;
32     scanf("%d", &t);
33     while ( t-- )
34     {
35         int g, l;
36         scanf("%d%d", &g, &l);
37         if ( l % g )
38         {
39             printf("0\n");
40         }
41         else
42         {
43             solve( l / g );
44         }
45     }
46     return 0;
47 }

 

posted @ 2015-08-08 10:07  hxy_has_been_used  阅读(149)  评论(0编辑  收藏  举报