【C语言】之''合数分解''

老师平时布置的希冀系统上的作业答案,仅供参考!

【问题描述】

由数学基本定理可知:任何一个大于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
喜欢就支持一下吧
点赞0 分享
评论 抢沙发

请登录后发表评论

    暂无评论内容