文章目录
- 一、前言
- 二、问题
- 问题: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表示成功执行
}
三、感谢
如若本文对您的学习或工作有所启发和帮助,恳请您给予宝贵的支持——轻轻一点,为文章点赞;若觉得内容值得分享给更多朋友,欢迎转发扩散;若认为此篇内容具有长期参考价值,敬请收藏以便随时查阅。
每一次您的点赞、分享与收藏,都是对我持续创作和分享的热情鼓励,也是推动我不断提供更多高质量内容的动力源泉。期待我们在下一篇文章中再次相遇,共同攀登知识的高峰!
这里是引用