其实就是求质因子的个数 这样肯定是最多的
注意一下 除到最后不是1的情况
1 #include <iostream> 2 #include<cstdio> 3 #include<cstring> 4 #include<algorithm> 5 #include<stdlib.h> 6 #include<cmath> 7 using namespace std; 8 #define N 32000 9 int p[N],g,f[N]; 10 void init() 11 { 12 int i,j; 13 f[0] = 1; 14 f[1] = 1; 15 for(i = 2; i < N ; i++) 16 if(!f[i]) 17 for(j = i+i ; j < N ; j+=i) 18 f[j] = 1; 19 for(i = 2; i < N ;i++) 20 if(!f[i]) 21 p[++g] = i; 22 } 23 int main() 24 { 25 int i,n,m,t; 26 init(); 27 cin>>t; 28 while(t--) 29 { 30 cin>>n>>m; 31 if(m%n!=0) 32 { 33 printf("0 "); 34 continue; 35 } 36 int x = m/n,ans=1; 37 for(i = 1; i <= g ; i++) 38 { 39 while(x&&x%p[i]==0) 40 { 41 x/=p[i]; 42 ans++; 43 } 44 } 45 if(x!=1) ans+=1; 46 cout<<ans<<endl; 47 } 48 return 0; 49 }