当前位置: 首页 > news >正文

选素数--线性筛

利用线性筛找到最大质因数,然后找符合条件的ans

#include <bits/stdc++.h>
using namespace std;
#define N 100011
#define M 1000011
#define inf 0x3f3f3f3f
typedef long long ll;
typedef pair<ll,int> PII;
int n,m,q,ans;
int arr[M];
int prime[M];
int f[M]; 
void xxs(int x)///线性筛 
{
	int pos=0;
	for(int i=2;i<=x;i++)
	{
		if(!arr[i]) prime[++pos]=f[i]=i;
		for(int j=1;j<=pos;j++)
		{
			if(i*prime[j]>x) break;///范围
			arr[i*prime[j]]=1;
			f[i*prime[j]]=max(f[i],prime[j]);///重点-记录最大质因数 
			if(i%prime[j]==0) break; ///最小质因数 
		}
	}
}
int get(int x)
{
	if(!arr[x]) return inf;///素数百搭就inf 
	return x-f[x]+1;///复合条件的公式 
}
int main()
{
	
		cin>>n;
		xxs(M);
		ans=inf;
		for(int i=get(n);i<=n;i++)///在这个范围遍历 
		{
			ans=min(ans,get(i));
		}
		if(ans>=inf) cout<<-1;
		else cout<<ans;
  		return 0;
}

相关文章:

  • 网络基础-路由器和交换机工作配置
  • Redis--redis客户端
  • NodeJs之fs模块
  • Gunicorn部署指南:核心参数详解与实践
  • (UI自动化测试web端)第二篇:元素定位的方法_css定位之ID选择器
  • 【Spring AI】基于专属知识库的RAG智能问答小程序开发——功能优化:用户鉴权主体功能开发
  • 从输入 URL 到页面加载完成,发生了什么?
  • sql结尾加刷题
  • 【LeetCode 题解】算法:4.寻找两个正序数组的中位数
  • Spring WebSecurityCustomizer 的作用
  • Resume全栈项目(一)(.NET)
  • wokwi arduino mega 2560 - 键盘与LCD显示
  • Go语言中context.Context的
  • DM9162使用记录
  • [计算机三级网络技术]第十一章:网络管理技术
  • Spring WebFlux之ServerWebExchange
  • 从LLM到AI Agent的技术演进路径
  • Qt图形视图框架在项目中的应用
  • 涅槃上岸,入陕进军,复试全程流程开启!
  • C语言编译为可执行文件的步骤
  • 上海黄浦:新婚夫妻来登记可“摇号”定制无人机表演,每周三对
  • 菲律宾华人“钢铁大王”撕票案两主谋落网,部分赎金已被提取
  • 财政部:4月份中央收入增长1.6%,今年以来首月实现正增长
  • 上海发布台风红色预警?实为演练,今日下午局部中雨下班请注意
  • A股午后回暖,三大股指涨跌互现:港口板块重新走强,两市成交近1.1万亿元
  • 七猫征文大赛颁出112万奖金,非遗题材作品斩获金奖