假设一个不小于2的整数n,对从2开始的自然数k,这个试探它是否是整数n的一个因子,如果是,则输出该因子,并将n/k的结果赋给n(接下来只需要对n除以已经找到的因子之后的结果继续找因子)。如果n的值不是大于1(即n的值为1,),则n的所有因子都找完了,因此需要结束循环。
注意:并不是找到了k是一个因子之后k就立刻+1,因为可能分解后的n中k仍然是n的因子,因此需要使用到 if(n%k==0) else k++;
选取90进行计算就知道了,90%2==0,n=90/2=45,所以k就是一个质因子;接下来继续45%2!=0,因此k=3,45%3==0,n=45/3=15,所以k=3就是一个质因子;接下来15%3==0,n=15/3=5,所以3仍然还能是他的一个质因子;接下来5%3!=0,5%4!=0,5%5==0,n=5/5=1,这时是最后一个因子,因此要与之前的不同,这里在else语句中输出的是最后一个k,进行换行后要使用break语句跳出整个循环。这样就结束分解了。
#include<stdio.h>
int main()
{//将一个不小于2的整数分解质因数。例如,输入90,则输出:90=2*3*3*5 int n,k=2;printf("请输入一个不小于2的整数:");scanf("%d",&n);printf("质因子分解的结果为:%d=",n);while(1){if(n%k==0){n/=k;if(n>1)printf("%d*",k);else{printf("%d\n",k);break;}}else k++;}return 0;
}