老师平时布置的希冀系统上的作业答案,仅供参考!
【问题描述】
由数学基本定理可知:任何一个大于1的非素数整数(即合数)都可以唯一分解成若干个素数的乘积。编写程序,从控制台读入一个合数(合数的大小不会超过int数据类型表示的范围),求该合数分解成素数的最小集。该最小素数集由合数分解成的素数组成,并且重复的素数只保留一个。按从小到大的顺序输出求得的最小素数集。
【输入形式】
从控制台输入一个合数。
【输出形式】
在标准输出上按从小到大顺序输出求得的最小素数集,各素数之间以一个空格分隔,最后一个素数后空格可有可无。
【输入样例】
12308760
【输出样例】
2 3 5 29 131
【样例说明】
输入的合数为12308760,该合数分解成的素数乘积为:2223333529*131。这些素数形成的最小集为:2 3 5 29 131。
【参考答案】
#include "stdio.h"
int main()
{
int d;
int i,j;
scanf("%d",&d);
i=2;
while(d>=i)
{
j=0;
while(d%i==0)
{
j++;
d=d/i;
}
if(j!=0)
printf("%d ",i);
i=i+1;
}
}
© 版权声明
文章版权归作者所有,未经允许请勿转载。
THE END
暂无评论内容