#include<stdio.h>
int main()
{
int n,i;
scanf("%d",&n);
printf("%d=",n);
for(i=2;i<=n;i++)
{
while(n!=i) //巧妙在这,for里边套了个while,保证重复的i了
{
if(n%i==0) //不用判断是 质数,因为都是从最小的2开始不断整除的,
{ //只要 是合数,就会被2给拆解
printf("%d*",i);
n=n/i;
}
else
break;
}
}
printf("%d",n);
return 0;
}
pta分解质因数以下代码怎么理解
- 写回答
- 好问题 0 提建议
- 追加酬金
- 关注问题
- 邀请回答
-
1条回答 默认 最新
- threenewbee 2023-12-18 21:53关注
这个代码的思路是,从2开始,依次尝试对n整除,如果可以整除,那么继续用这个数,如果不行,再用更大的那个数 比如1920这个数字 首先用2尝试,得到960,因为还可以用2,于是继续,得到480 240 120 60 30 15,然后再用3,得到5,再用4,没有,再用5,得到1,因为1比6小,退出for循环,因此就是2*2*2*2*2*2*2*2*3*5 你可以在 n=n/i; 后面加上 printf("\nn=%d\n", n); 就看明白了
本回答被题主选为最佳回答 , 对您是否有帮助呢?解决 无用评论 打赏 举报 编辑记录
悬赏问题
- ¥30 基于信创PC发布的QT应用如何跨用户启动后输入中文
- ¥20 非root手机,如何精准控制手机流量消耗的大小,如20M
- ¥15 远程安装一下vasp
- ¥15 自己做的代码上传图片时,报错
- ¥15 Lingo线性规划模型怎么搭建
- ¥15 关于#python#的问题,请各位专家解答!区间型正向化
- ¥15 unity从3D升级到urp管线,打包ab包后,材质全部变紫色
- ¥50 comsol温度场仿真无法模拟微米级激光光斑
- ¥15 上传图片时提交的存储类型
- ¥15 VB.NET如何绘制倾斜的椭圆