题解:SP10232 AMR11E - Distinct Primes

前话

这咋人名都和 HP 一模一样了,SPOJ 出题人里是不是全是哈迷啊。

思路

非常直观的一个思路:从前往后枚举每一个数,看是否满足条件,输出满足条件的第一个。

CODE

#include<bits/stdc++.h>
using namespace std;
bool is(int n){//判断质数
    if(n<2) return 0;
    for(int i=2;i<=sqrt(n);i++) if(n%i==0) return 0;
    return 1;
}
bool chk(int n){//看是否有三个及以上的质因子
    int cnt=0;
    for(int i=2;i<=n;i++){
        if(n%i==0&&is(i)){
            cnt++;
            if(cnt==3) return 1;//如果有三个就可以直接退出
        }
    }
    return 0;
}
main(){
    int t;
    cin>>t;
    while(t--){
        int n;
        cin>>n;
        int cnt=0;
        for(int i=1;;i++){//从前往后枚举
            if(chk(i)){
                cnt++;
                if(cnt==n){
                    cout<<i<<"\n";
                    break;
                }
            }
        }
    }
}

虽然还可以再优化,但也没必要了。

posted @ 2024-05-13 21:37  Z_AuTwT  阅读(6)  评论(0编辑  收藏  举报