------------------------------------------
本文为本人原创,欢迎转载!
雪夜流星
------------------------------------------
题目:给定一个整数,将其分解为质因数的乘积,如输入90,输出“90=2*3*3*5”。(质因数的数目最多为10个)。
思路:输入一个数n,将2.......d(d为n每次分解后所得的值,初始值为n)的所有数都按下面的操作遍历一遍,先判断该数是否为素数,若为素数,则判断该数是否能被d整除,若能整除则一直整除,并把该素数放入临时数组中,更新d的值;否则,进行下一次循环。
代码实现:
#include
#include
int main(void)
{
int d = 0;
int tmp = 0;
int i = 0;
int j = 0;
int k = 0;
int a[10] = {0};
printf("please input a data:");
scanf("%d", &d);
tmp = d;
/*遍历2到d中的所有数,先判断该数是否为素数,再判断该数是否为
d的因数,两个条件满足则将其存入数组中;否则进行下一次循环*/
for (i=2; i<=d; i++)
{
/*判断该数是否为素数,若非素数则进行下一次循环*/
for (j=2; j
{
if (i % j == 0)
{
break;
}
}
/*判断i是否为d的因数,如果是则将i存入临时数组,并更新d的值,
此处用while是为了满足一个整数中有几个相同的因数的情况*/
while (d % i == 0)
{
a[k++] = i;
d = d/i;
}
}
/*分三段将该数组打印到终端*/
printf("%d=", tmp);
for (i=0; i
{
printf("%d*", a[i]);
}
printf("%d\n", a[k-1]);
return 0;
}
阅读(7409) | 评论(0) | 转发(0) |