Dreaming of Freedom(数论,贪心)

用nsqrt(n)的时间复杂度就能过

复制代码
//Dreaming of Freedom:https://codeforces.com/problemset/problem/1826/C #include <bits/stdc++.h> //#define int long long using namespace std; const int N=1e5+10,mod=1e9+7; string s; int n,t,a[N],f[N],res,num,ans,m; bool vis[N]; int main() { std::ios::sync_with_stdio(false),cin.tie(0),cout.tie(0); cin>>t; while(t--){ cin>>n>>m; if(n>=2&&m>=n){ cout<<"NO"<<endl; continue; } if(!(n%2)&&m>=2){ cout<<"NO"<<endl; continue; } if(n>m){ bool f=false; for(int i=2;i<=n/i&&i<=m;++i){ if(n%i==0){ f=true; break; } } if(f){ cout <<"NO"<<endl; continue; } } cout<<"YES"<<endl; } return 0; }
复制代码

 

复制代码
#include <bits/stdc++.h> //#define int long long using namespace std; const int N=1e6+10,mod=1e9+7; string s; int n,t,p[N],prime[N],res,num,ans,m; bool vis[N]; int main() { std::ios::sync_with_stdio(false),cin.tie(0),cout.tie(0); cin>>t; vis[1]=true,prime[1]=1; for(int i=2;i<=1000000;i++){ if(!vis[i]) p[++num]=prime[i]=i; for(int j=1;p[j]<=1000000/i;j++){ vis[p[j]*i]=true,prime[i*p[j]]=p[j]; if(!(i%p[j])) break; } } while(t--){ cin>>n>>m; if(prime[n]==1||prime[n]>m) cout<<"YES"<<endl; else if(prime[n]<=m)cout<<"NO"<<endl; } return 0; }
复制代码

 


__EOF__

本文作者Sakurajimamai
本文链接https://www.cnblogs.com/o-Sakurajimamai-o/p/17498803.html
关于博主:评论和私信会在第一时间回复。或者直接私信我。
版权声明:本博客所有文章除特别声明外,均采用 BY-NC-SA 许可协议。转载请注明出处!
声援博主:如果您觉得文章对您有帮助,可以点击文章右下角推荐一下。您的鼓励是博主的最大动力!
posted @   o-Sakurajimamai-o  阅读(39)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· winform 绘制太阳,地球,月球 运作规律
· AI与.NET技术实操系列(五):向量存储与相似性搜索在 .NET 中的实现
· 超详细:普通电脑也行Windows部署deepseek R1训练数据并当服务器共享给他人
· 【硬核科普】Trae如何「偷看」你的代码?零基础破解AI编程运行原理
· 上周热点回顾(3.3-3.9)
-- --
点击右上角即可分享
微信分享提示