结果是-125=-555
若输入的值是-125。
#include <stdio.h>
#include <math.h>
fun (int n)
{
int k,r ;
for(k=2; k<=sqrt(n);k++)
{
r=n %k;
while(!r) {
printf(“%d",k); n=n/k;
if (n>1) printf(“*");
r=n %k;
}
}
if (n!=1) printf(%dn",n);
}
int main ( )
{
int n;
scanf(%d",&n);
printf(“%d=”,n);
if (n<0) printf(“-”);
n= fabs(n); fun(n);
return 0;
}
分析一下,n=-125,那么调用函数为fun(125)
for循环范围为k从2到11,因为sqrt(125)为11-12之间
while循环成立条件要求r为0,而r的值为125求余k,所以k从2到11之间只有k=5满足条件,进入循环
此时printf("%d",k)会输出5
n=n/k使得n=25
由于n>1,所以输出号
r=n%k=25%5=0,可以继续循环,printf("%d",k)再次输出一个5
n=n/k=25/5=5
由于n>1,所以再次输出号
r=n%k=0,继续循环,printf("%d",k)再次输出一个5,
n=n/k=5/5=1
n>1不成立,不输出*号
r=n%k=1%5=1,循环结束
由于n值为1,所以n!=1不成立,最后的print不输出
所以最终输出为:
-125=-5*5*5