Forsaken喜欢数论(欧拉筛)

Forsaken喜欢数论

https://ac.nowcoder.com/acm/problem/53079

https://ac.nowcoder.com/acm/problem/53079
题意:
给定一数n,求1~n每个数的最小质因数的和。

分析:
可以用欧拉线性筛素数法,每个数仅使用其最小素因数筛去,开始先打个表,后面直接统计答案就行了。

代码:

#include<stdio.h>
#include<algorithm>
#include<vector>
using namespace std;
typedef unsigned long long ll;
int n,m,v,w,s,i,j;
const int LIM = 3e7 + 10;      
int prime[LIM / 3];
int miniFactor[LIM];
int primepos;
void euler() {
    int tmp;
    for (int i = 2; i < LIM; i++) {
        if (!miniFactor[i]) prime[primepos++] = i, miniFactor[i] = i;
        for (int j = 0; (tmp = i * prime[j]) < LIM; j++) {
            miniFactor[tmp] = prime[j];
            if (!(i % prime[j])) break;
        }
    }
}
int main()
{
    ll sum=0;
    euler();
    scanf("%d",&n);
    for(i=1;i<=n;i++){
        sum+=miniFactor[i];
    }
    printf("%lld",sum);
}
全部评论

相关推荐

04-08 13:31
已编辑
门头沟学院 前端工程师
D0cC:京东营收1万多亿人民币,阿里9000多亿,虽然他俩利润都没腾讯和字节多,但是很恐怖了啊,负担了多少打工人的薪水
投递拼多多集团-PDD等公司10个岗位
点赞 评论 收藏
分享
SHC2:关键问题是你这三段实习是三个不同的岗位…你这样子秋招就是只有一段实习的本科生..
点赞 评论 收藏
分享
评论
1
收藏
分享

创作者周榜

更多
牛客网
牛客企业服务