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

蓝桥杯1140 最小质因子之和(Hard Version)

题目描述

定义 F(i) 表示整数 i 的最小质因子。现给定一个正整数 N,请你求出

输入描述

第 1 行为一个整数 T,表示测试数据数量。

接下来的 T 行每行包含一个正整数 N。

1≤T≤10^{6},2≤N≤2×10^{7}

输出描述

输出共 T 行,每行包含一个整数,表示答案。

输入输出样例

示例 1

输入

3
5
10
15

输出

12
28
59

 

#include<iostream>
using namespace std;typedef long long ll;
const int N = 2e7+10;
int t;ll prime[N];  //存储所有筛出的质数
bool is_prime[N];  //状态数组,is_prime[i]为 1表示 i为质数
ll cnt;  //质数的个数 
ll sum[N];  //f[i]表示从2到i的所有数的最小质因子之和//线性筛: 
void f(int n)
{for(int i=2; i<=n; ++i){is_prime[i]=1;  //初始化:默认所有数为质数}for(int i=2; i<=n; ++i){if(is_prime[i]){cnt++;prime[cnt]=i;}for(int j=1; j<=cnt; ++j){int p = prime[j];if(i*p > n) break;is_prime[i*p] = 0;if(i%p == 0) break;}}
}int main()
{cin>>t;f(N);//预处理前缀和数组sumfor(int i=2; i<=N; ++i){if(is_prime[i]){sum[i] += sum[i-1]+i;  //是质数最小质因子就是该数本身}else {int j;for(j=1; j<=cnt; j++){if(i%prime[j]==0) break;  //否则就找最小质因子}sum[i] += sum[i-1]+prime[j]; }} while(t--){int n;        cin>>n;cout<<sum[n]<<endl;}return 0;
}

相关文章:

  • 深入理解位图(Bit - set):概念、实现与应用
  • 蓝桥杯19681 01背包
  • Web开发-JavaEE应用SpringBoot栈SnakeYaml反序列化链JARWAR构建打包
  • linux本地部署ollama+deepseek过程
  • 职场方法论总结(4)-如何正确地汇报
  • 使用Python制作Lorenz吸引子的轨道生成视频
  • 《云端共生体:Flutter与AR Cloud如何改写社交交互规则》
  • 数字电子技术基础(六十)——使用Digital软件绘制脉冲触发的触发器
  • C++:static成员
  • 你引入的lodash充分利用了吗?
  • 封装、继承、多态的理解
  • 基于区块链技术的供应链溯源系统:重塑信任与透明度
  • 改进模糊C均值时序聚类+编码器状态识别!IPOA-FCM-Transformer组合模型
  • ESMFold在线预测蛋白质结构
  • ShenNiusModularity项目源码学习(26:ShenNius.Admin.Mvc项目分析-11)
  • 设备预测性维护的停机时间革命:中讯烛龙如何用AI重构工业设备管理范式
  • Linux518 YUM源仓库回顾(需查)ssh 服务配置回顾 特定任务配置回顾
  • 【驱动开发】一 字符设备驱动框架
  • tensorflow图像分类预测
  • IDEA - Windows IDEA 代码块展开与折叠(基础折叠操作、高级折叠操作)
  • IPO周报|本周2只新股申购,比亚迪、上汽“小伙伴”来了
  • 上海小学生暑(寒)托班会增设开办期数、延长办班时间吗?团市委回应
  • 李洋谈美国黑帮电影与黑帮文化
  • 美国贸易政策|特朗普模式:你想做交易吗?
  • 贞丰古城:新垣旧梦间的商脉与烟火
  • 又一例!易方达基金张坤卸任副总职务,将专注于投资管理工作