实在想不出来其他求素数的方法了, 就想用多线程骗点分, 结果就第一个过了, 其余全 RE (
我的解法 (C++ 20):
#include<iostream>
#include<atomic>
#include<thread>
#include<cmath>
std::atomic<unsigned>ans{};
auto f(unsigned x){
if(!(x^2)){
goto END;
}
if((x<2)||!(x%2)){
return;
}
for(unsigned i{3};i<sqrt(x)+1;i+=2){
if(!(x%i)){
return;
}
}
END:
++ans;
return;
}
auto main()->int{
std::ios::sync_with_stdio(false),std::cin.tie(nullptr),std::cout.tie(nullptr);
unsigned n;
std::cin>>n;
for(unsigned i{1};i<n-1;++i){
std::thread(f,i).detach();
}
std::thread(f,n).join();
std::cout<<ans;
return 0;
}