当前位置: 首页 > 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;
}
http://www.xdnf.cn/news/513757.html

相关文章:

  • 2KW压缩机驱动参考设计【SCH篇】
  • 使用conda创建python虚拟环境,并自定义路径
  • C++学习:六个月从基础到就业——C++20:协程(Coroutines)
  • Golang内存逃逸
  • 用代码解读_AI_强化学习在机器人路径规划中的应用与优化
  • nginx相关面试题30道
  • OpenCV-去噪效果和评估指标方法
  • MapReduce-WordCount实现按照value降序排序、字符小写、识别不同标点
  • 【ROS2】 核心概念6——通信接口语法(Interfaces)
  • 定时器相关概念
  • C++(243~263)STL常用算法、遍历算法(for_each,Transform)、查找算法、拷贝和替换、常用算术生成,常用集合算法。
  • 2025抓包工具Reqable手机抓包HTTPS亲测简单好用-快速跑通
  • 小米汽车:新能源赛道的破局者与变革者
  • Python 向量化操作如何实现多条件筛选
  • SpringBoot(一)--- Maven基础
  • 大模型评测体系综述
  • java19
  • 1.2.2
  • Java可变参数与Collections工具类详解
  • [Java实战]Spring Boot整合Elasticsearch(二十六)
  • ARM A64 STR指令
  • LWIP的Socket接口
  • 扫描件交叉合并PDF免费软件 拖拽即合并 + 自动对齐页码 档案整合更轻松
  • C++多态与虚函数详解——从入门到精通
  • 【计算机网络】第一章:计算机网络体系结构
  • 数青蛙 --- 模拟
  • Go语言中函数 vs 方法
  • JVM如何处理多线程内存抢占问题
  • 【Java学习笔记】【第一阶段项目实践】房屋出租系统(面向对象版本)
  • 【Linux】第十九章 管理SELinux安全性