文章目录
- 一、前言
- 二、问题
- 问题:1234. 任意输入一正整数N,要求把它拆成质因子的乘积。
- 问题:1446. 人口增长问题
 
- 三、感谢
一、前言
本章节主要对循环应用的题目进行讲解,包括《1234. 任意输入一正整数N,要求把它拆成质因子的乘积。》《》《》《》。
二、问题
问题:1234. 任意输入一正整数N,要求把它拆成质因子的乘积。
类型:循环应用
题目描述:
任意输入一正整数 N,求出它的所有质因子。如:10=(25) ;20=(225) ,并求出该整数 N 有多少个质因子。
输入:
输入只有一行,包括 1 个整数n(n≤10^5) 。
输出:
输出第 1 行,按题目要求的格式输出 n 的质因子。
第 2 行,输出 n 的质因子的数量。
样例:
输入:
36
输出:
2 2 3 3
4

1.分析问题
- 已知:一个正整数n。
- 未知:该正整数的所有质因子以及每个质因子的出现次数。
- 关系:通过循环除法,检查从2开始的每个数是否能整除n,如果可以,则该数是n的一个质因子,然后更新n为n/i,继续寻找剩余部分的质因子,直到n变为1。
2.定义变量
定义变量:i用于在循环中作为除数(初始值为2,即最小的质数),n存储用户输入的正整数,c记录质因子的总个数(初始化为0)。
	//二、数据定义 
	int i=2,n,c=0;
3.输入数据
从标准输入读取一个正整数并存储到变量n中。
	//三、数据输入 
	cin>>n;
4.数据计算
使用while循环,条件为i<=n,循环执行以下操作:
- 如果n能被i整除(即n%i==0):
- 输出质因子i(cout<<i<<" ")。
- 更新n为n/i,以便继续查找剩余部分的质因子。
- 增加计数器c的值(表示找到一个质因子)。
- 如果n不能被i整除,则将i加1,尝试下一个可能的质因子。
	//四、数据计算 
	while(i<=n){
		if(n%i==0){
			cout<<i<<" ";
			n/=i;
			++c;
		}else{
			++i;
		}
	}
5.输出结果
输出质因子的总个数c(cout<<c)。
	//五、输出结果 
	cout<<endl<<c;
	return 0;	
完整代码如下:
#include<bits/stdc++.h> 
using namespace std;
int main(){
    // 一、分析问题
    // 目标:给定一个正整数n,找出其所有的质因子,并统计每个质因子的出现次数。
    // 二、数据定义
    int i=2, n, c=0; // 初始化:i为当前检验的质因子候选(从2开始),n为待分解的正整数,c记录质因子的总个数
    // 三、数据输入
    cin >> n; // 从用户输入读取正整数n
    // 四、数据计算
    while(i <= n){ // 当i不大于n时循环
        if(n % i == 0){ // 判断n是否能被i整除
            cout << i << " "; // 是质因子,输出i
            n /= i; // 更新n为n除以i的结果,继续寻找n的其他质因子
            ++c; // 增加质因子计数
        }else{ // n不能被i整除
            ++i; // 尝试下一个可能的质因子
        }
    }
    // 五、输出结果
    cout << endl << c; // 输出质因子总数
    return 0; // 程序结束,返回0表示成功
}
问题:1446. 人口增长问题
类型:循环应用
题目描述:
我国现有 x 亿人口,按照每年 0.1% 的增长速度,n 年后将有多少人?
输入:
一行,包含两个整数 x 和 n ,分别是人口基数和年数,以单个空格分隔。
输出:
输出最后的人口数,以亿为单位,保留到小数点后四位。(1≤x≤100,1≤n≤100) 。
样例:
输入:
13 10
输出:
13.1306

1.分析问题
- 已知:初始人口为 x 亿人,年增长率为0.1%。
- 未知:n 年后的人口总数。
- 关系:每年的人口增长量为当前人口的0.1%,因此,n 年后的总人口可以通过逐年累加当前年人口的0.1%来计算。
2.定义变量
- 定义整型变量 n 存储年数。
- 定义双精度浮点型变量 x 存储以亿为单位的初始人口数。
	//二、数据定义 
	int n;
	double x; 
3.输入数据
- 使用 cin 从标准输入读取 x(初始人口)和 n(年数)的值。
	//三、数据输入 
	cin>>x>>n;
4.数据计算
 使用 for 循环模拟 n 年的增长过程。每年:
- 当前人口数 x 增加其0.1%(即 x * 0.001)。
	//四、数据计算 
	for(int i=1;i<=n;i++){
		x+=x*0.001;
	}
5.输出结果
- 使用 cout 输出最终人口数,fixed 和 setprecision(4) 用于设定输出格式,确保人口数保留四位小数。
	//五、输出结果 
	cout<<fixed<<setprecision(4)<<x;
完整代码如下:
#include<bits/stdc++.h> // 包含标准库中的所有常用头文件,方便编程但可能增加编译时间
using namespace std; // 使用std命名空间,省略std::前缀
int main(){ // 程序的主入口函数
    // 一、分析问题
    // 给定初始人口(x 亿),年增长率(0.1%),求n年后的总人口
    // 二、数据定义
    int n; // 定义一个整数n,存储年数
    double x; // 定义一个双精度浮点数x,存储初始人口数(单位:亿)
    // 三、数据输入
    cin >> x >> n; // 从用户输入中读取初始人口x(亿)和年数n
    // 四、数据计算
    for(int i = 1; i <= n; i++){ // 循环n次,模拟每一年的增长
        x += x * 0.001; // 每年的人口增长为原有人口的0.1%,累加到x上
    }
    // 五、输出结果
    cout << fixed << setprecision(4) << x; // 设置输出格式为固定小数点,保留四位小数,然后输出最终人口数x
    return 0; // 主函数正常结束,返回0表示成功执行
}
三、感谢
如若本文对您的学习或工作有所启发和帮助,恳请您给予宝贵的支持——轻轻一点,为文章点赞;若觉得内容值得分享给更多朋友,欢迎转发扩散;若认为此篇内容具有长期参考价值,敬请收藏以便随时查阅。
每一次您的点赞、分享与收藏,都是对我持续创作和分享的热情鼓励,也是推动我不断提供更多高质量内容的动力源泉。期待我们在下一篇文章中再次相遇,共同攀登知识的高峰!

这里是引用







![【YOLOv9改进[注意力]】在YOLOv9中使用注意力CascadedGroupAttention(2023)的实践 + 含全部代码和详细修改方式](https://img-blog.csdnimg.cn/direct/337847fd86bd4ebf8a9228e4e4065a10.png)











