优化
2026-02-03 20:37:02
发布于:广东
25阅读
0回复
0点赞
#include <bits/stdc++.h>
using namespace std;
int maxxp[1000001],n,b;
int main(){
cin>>n>>b;
// 数组maxxp[i]存储数字i的最大质因子,初始化全为0
// 埃氏筛核心:遍历所有数,标记每个合数的最大质因子
for(int i=2;i<=n;i++){
// 如果maxxp[i]为0,说明i是质数
if(maxxp[i]==0){
// 遍历i的所有倍数,将其最大质因子更新为当前质数i
for(int j=i;j<=n;j+=i)
max_prime[j]=i;
}
}
// 数字1是特殊的B-smooth数,初始计数为1
int count=1;
// 遍历2~n,判断最大质因子是否<=b,符合则计数+1
for(int i=2;i<=n;i++){
if(maxxp[i]<=b)
count++;
}
// 输出最终结果
cout<<count;
return 0;
}
这里空空如也



有帮助,赞一个