若a*b=c,a<b,则a<根号下c,则大约只需要枚举45000以内的素数就可以了,然后暴力
#include<bits/stdc++.h> using namespace std; const int maxN=50000; vector<long long> prime; bool isprime[maxN]; int main(){ memset(isprime,0,sizeof(isprime)); for(long long i=2;i<maxN;i++)if(!isprime[i]){ prime.push_back(i); for(long long j=i*i;j<maxN;j+=i) isprime[j]=true; } int t,l=prime.size(); long long u; scanf("%d",&t); for(int i=0;i<t;i++){ scanf("%lld",&u); for(int j=0;i<l;j++)if(u%prime[j]==0){ printf("case #%d:\n%lld\n",i,u/prime[j]); break; } } }