解题思路:从2开始,用 i 重复整除目标数(若num%i==0,则num/=i),不能被整除再用下一个(i++)数整除num。
每遇到一个整除num且不重复(max_prime!=i)的数都输出
注意事项:由于重复整除num,任何质因子的倍数数值已无法再整除num,换言之,后续任何不能整除num的数都不可能是质因子
参考代码:
#include <stdio.h>
int main()
{
int num;
int max_prime=0; //(当前)最大质因子
scanf("%d",&num);
for(int i=2;i<=num;)
if(num%i==0){
num/=i;
if(max_prime!=i){
max_prime=i; //更新最大质因子
printf("%d ",max_prime);
}
}
else
i++; //测试下一个数
}
0.0分
0 人评分
C语言训练-排序问题<1> (C语言代码)浏览:636 |
求圆的面积 (C语言代码)浏览:1366 |
简单的a+b (C语言代码)浏览:752 |
WU-整数平均值 (C++代码)浏览:1307 |
三角形 (C++代码)记忆化搜索浏览:1318 |
C语言程序设计教程(第三版)课后习题10.3 (C语言代码)浏览:1968 |
星期判断机 (C语言代码)浏览:892 |
程序员的表白 (C语言代码)浏览:678 |
判定字符位置 (C语言代码)浏览:849 |
拯救雅典娜浏览:1380 |