poj2649 数论

时间:2022-05-20 09:57:47
 //Accepted    420K    16MS
 //考虑 0和n!    does not divide
 //      1和0!  divides
 #include <cstdio>
 #include <cstring>
 #include <iostream>
 using namespace std;
 <<)+;
 int pri[imax_n];
 int cnt;
 void prime()
 {
     ;i<imax_n;i++)
     {
         if ((long long )i*i<(long long )imax_n)
         for (int j=i*i;j<imax_n;j+=i)
         {
             pri[j]=;
         }
     }
     cnt=;
     ;i<imax_n;i++)
     )
     pri[cnt++]=i;
 }
 int getNumber(int n,int k)
 {
     ;
     ) ;
     )
     {
         ans+=n/k;
         n/=k;
     }
     return ans;
 }
 int split(int n,int m)
 {
     int t;
     //printf("n=%d\n",n);
     ) ;
     )
     {
         ) ;
         ;
     }
     ;i<cnt && (__int64 )pri[i]*pri[i]<=(__int64 )n;i++)
     {
         )
         {
             //printf("pri=%d\n",pri[i]);
             t=;
             )
             {
                 t++;
                 n/=pri[i];
             }
             int temp=getNumber(m,pri[i]);
             //printf("temp=%d t=%d\n",temp,t);
             ;
         }
     }
     )
     {
         int temp=getNumber(m,n);
         ) ;
     }
     ;
 }
 int main()
 {
     prime();
     int n,m;
     while (scanf("%d%d",&n,&m)!=EOF)
     {
         int ans=split(m,n);
         )
         {
             printf("%d divides %d!\n",m,n);
         }
         else
         {
             printf("%d does not divide %d!\n",m,n);
         }
     }
     ;
 }