素数唯一分解定理
#include <iostream> #include <math.h> using namespace std; long long f[15][110]; int t[110]; int main() { long long m,n; for(int i=1;i<=10;i++) { t[i]=0; for(int j=0;j<=i;j++) { for(int k=0;k<=i;k++) { long long x=(long long)(pow(2,double(j))*pow(5,double(k))); if(x<(long long)pow(10,double(i))&&x>=(long long)pow(10,double(i-1))) f[i][t[i]++]=x; } } } while(cin>>m>>n) { int tot=0,tm=0,tn=0; int cm=m,cn=n; while(cm) { tm++; cm/=10; } while(cn) { tn++; cn/=10; } for(int i=tm;i<=tn;i++) { for(int j=0;j<t[i];j++) { if(f[i][j]>=m&&f[i][j]<=n) tot++; } } cout<<tot<<endl; } return 0; }