P5535 【XR-3】小道消息

原题链接

题解

如果 k+1 是质数,且 n+1 内没有 k+1 的倍数,那么只需要一天

否则 只需要两天

  • 如果 k+1 不是质数,第一天产生的质数会在第二天布满所有数

  • 如果 k+1 是质数,那么 k+1 ~ 2k+2 之间一定有一个质数,也能布满所有数

实施

首先要判断 k 是不是质数 O((n)) 恰好可以

code

#include<bits/stdc++.h>
using namespace std;

#define int long long //一定要开long long,不开long long 见祖先 

int n, k;

bool prime(int x)//很清晰的质数筛 
{
	if(x == 1)//特判一下1 
		return 0;
	if(x == 2)//特判一下2 
		return 1;
	for(int i = 2; i <= sqrt(x); ++ i)//就是枚举每个数,看看它是否是它的约数 
		if(x % i == 0)//如果不是的话 
			return 0;//直接return false 
	return 1;
}

signed main()
{
	scanf("%lld%lld", &n, &k);
	if(prime(k + 1) && 2 * k >= n)//其实,也很好理解,想一想,如果一个数是质数那么是不是除去它的倍数的数都与它互质?所以prime(k + 1)是判断它是不是质数,后面就是找有没有它的倍数(因为是连续的所以只有比一下大小即可 
		printf("1");
	else//除去1的答案就是二了(会有解释 
		printf("2");
	return 0;
}
posted @   纯粹的  阅读(7)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· TypeScript + Deepseek 打造卜卦网站:技术与玄学的结合
· Manus的开源复刻OpenManus初探
· AI 智能体引爆开源社区「GitHub 热点速览」
· 从HTTP原因短语缺失研究HTTP/2和HTTP/3的设计差异
· 三行代码完成国际化适配,妙~啊~
点击右上角即可分享
微信分享提示