gesp(C++五级)(8)洛谷:B3969:[GESP202403 五级] B-smooth 数

gesp(C++五级)(8)洛谷:B3969:[GESP202403 五级] B-smooth 数

题目描述

小杨同学想寻找一种名为 B -smooth 数的正整数。

如果一个正整数的最大质因子不超过 B ,则该正整数为 B -smooth 数。小杨同学想知道,对于给定的 n B ,有多少个不超过 n B -smooth 数。

输入格式

第一行包含两个正整数 n B ,含义如题面所示。

输出格式

输出一个非负整数,表示不超过 n B -smooth 数的数量。

样例 #1

样例输入 #1

复制代码
10 3

样例输出 #1

复制代码
7

提示

数据规模与约定

子任务 得分 n \\leq B B B
1 1 1 30 30 30 1 0 3 10^3 103 1 ≤ B ≤ 1 0 3 1 \leq B \leq 10^3 1≤B≤103
2 2 2 30 30 30 1 0 6 10^6 106 n ≤ B ≤ 1 0 6 \sqrt n \leq B \leq 10^6 n ≤B≤106
3 3 3 40 40 40 1 0 6 10^6 106 1 ≤ B ≤ 1 0 6 1 \leq B \leq 10^6 1≤B≤106

对全部的测试数据,保证 1 ≤ n , B ≤ 1 0 6 1 \leq n, B \leq 10^6 1≤n,B≤106。

AC代码(100分)

cpp 复制代码
#include<bits/stdc++.h>
using namespace std;
/*思路:
    写函数找一个数的最大质因子
	然后枚举判断并统计即可 
*/ 
int n,b,cnt=0;
//函数找一个数的最大质因子
int mprime(int x){
	int mx=0;//存最大质因子 
	for(int i=2;i<=sqrt(x);i++){
		while(x%i==0){
			mx=max(mx,i);//存当前的最大质因子 
			x/=i;
		}
	}
	if(x==1) return mx;
	else return x;
} 
int main(){ 
	cin>>n>>b;
	for(int i=1;i<=n;i++){
		if(mprime(i)<=b) cnt++;
	}
	cout<<cnt;
	return 0;
} 

文末彩蛋:

点击王老师青少年编程主页有更多精彩内容

相关推荐
workflower6 分钟前
用硬件换时间”与“用算法降成本”之间的博弈
人工智能·算法·安全·集成测试·无人机·ai编程
chushiyunen6 分钟前
python中的@Property和@Setter
java·开发语言·python
小樱花的樱花13 分钟前
C++ new和delete用法详解
linux·开发语言·c++
froginwe1114 分钟前
C 运算符
开发语言
fengfuyao98544 分钟前
低数据极限下模型预测控制的非线性动力学的稀疏识别 MATLAB实现
开发语言·matlab
摇滚侠1 小时前
搭建前端开发环境 安装 nodejs 设置淘宝镜像 最简化最标准版本 不使用 NVM NVM 高版本无法安装低版本 nodejs
java·开发语言·node.js
t198751281 小时前
MATLAB十字路口车辆通行情况模拟系统
开发语言·matlab
yyk的萌1 小时前
AI 应用开发工程师基础学习计划
开发语言·python·学习·ai·lua
重生之我是Java开发战士2 小时前
【动态规划】简单多状态dp问题:按摩师,打家劫舍,删除并获得点数,粉刷房子,买卖股票的最佳时机
算法·动态规划·哈希算法