c语言问题 编写一个函数,求出一个给定的数字的所有因子,如72=2*2*2*3*3.

小妹我是一个C语言初学者,望各位朋友帮我解决这一问题,多多注释,谢谢各位了阿....

#include<stdio.h>
void main()
{
int x,y,i=2,j=0,m;
printf("输入数字:");
scanf("%d",&x);
m=x;
int a[15]={0};
//设定一个范围足够的数组存放因子
while(i<=x)
{
if((x%i)==0) { x=x/i ;a[j]=i; j++; i=2;}
else i++;
//由于一个数的因子会小于或等于本身,所以可以
//以此设定跳出条件,用遍历的思想去从2开始逐个寻找因子
//如果那个数是因子之一则可以被整除if((x%i)==0)
//以此作为判断条件,而一个数的因子可能会重复
//所以每找到一个就要有重头开始再判断一边
//i=2;就是作为复位的,其实这个程序和算法很简单
//你自己多看两遍就明白了
//如果还有不懂得就直接上我的空间找我好了
}
printf("y=");

if(j==0) printf("%d\n",m);
//这是特殊情况质数
else
{
for(i=0;i<j-1;i++) if(a[i]!=0) printf("%d*",a[i]);
printf("%d\n",a[i]);
}

}
温馨提示:答案为网友推荐,仅供参考
第1个回答  2008-04-29
#include <stdio.h>

void fj(int); /* 说明函数 */
main()
{ int a;
printf("输入一个数:\t"); /* 输入数字 */
scanf("%d",&a);
fj(a);
}

void fj(int a)
{
int t=a,b=2,i=0;
while (b<t) /* 判断退出,如果大于输入的数了就退出 */
{

if (t%b==0)/* 判断是否是因子*/
{
printf("%d\t",b);
t=t/b;
b=1 ;
i++;/* 用于以后判断是否有因子用 */
}
b++; /* 用于增加因子可能 */
}
printf("\n");
if (i=0) printf("只有1和本身");/* 判断是否有因子 */
else printf("上面为因数\n");
}
第2个回答  2008-04-29
问问题之前,请先使用 搜索答案
http://zhidao.baidu.com/question/35806649.html?si=2
源程序如下:
main()
{
long n;
int i=2;
printf("input n:\n");
scanf("%ld",&n);
printf("%ld=",n);
while (i<=n)
{
while (n!=i)
{
if (n%i==0)
{
printf("%d*",i); /*这里的i就是一系列的素数2,3,5,7,...等*/
n=n/i;
}
else
break;
}
i++;
}
printf("%ld",n);
}
---------------------------------
算法:
对于一个数
(1)用2去除他,再用2除得到的商,直到不能整除
(2)之后用3去除商,再用3除得到的商,直到不能整除
(3)之后用5,...
(4)之后用7,...
第3个回答  2008-04-29
//---------------------------------------------------------------------------

#include <stdio.h>

void fj(int);
int main(void)
{ int a;
printf("input an integer:\t");
scanf("%d",&a);
fj(a);

return 0;
}

void fj(int a)
{
int t=a,b=2;
while (b<=t)
{
if (t%b==0) {
t==a?printf("%d=%d",a,b):printf("*%d",b);
t=t/b;
b=1 ;
}
b++;
}
putchar('\n');
}
//---------------------------------------------------------------------------