EOJ 2998 Prime

若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;
        }
    }
}

猜你喜欢

转载自www.cnblogs.com/TAMING/p/9228121.html