C语言之基本算法34—分解质因数(方法一)

来源:互联网 发布:mac橙色系口红 推荐 编辑:程序博客网 时间:2024/06/01 08:01
//矩阵基础/*==================================================================题目:输入一个正整数,将其分解为质因式,如:60=2*2*3*5;若本身是质数,则输出如:307是一个质数!==================================================================*/#include<stdio.h>void main(){int n,m,c,i,k,y[40];printf("输入一个正整数:");scanf("%d",&n);while(n>0){m=n;c=0;k=m/2;for(i=2;i<=k;i++){while(m%i==0){y[c++]=i;m/=i;}}if(m>1)y[c++]=m;if(c==1)printf("%d 是一个质数\n",n);else{printf("%d=%d",n,y[0]);for(i=1;i<c;i++)printf("*%d",y[i]);printf(".");}printf("\n\n继续输入一个正整数:");scanf("%d",&n);}}/*====================================================================评:这个编法可能比较抽象!比较难理解的地方是m>1,c==1,m%i==0;m>1,则m至少为2,说明至少有一个质因数(因为2,3,都是质数),所以储存质因子的数组y[]至少含一个元素!即c>=1;若c==1,则y[]恰好有一个元素,必定是这个数它本身!所以这个数就是素数!m%i==0,说明m可以被i整除,即i是m的因子,因为是从2开始的,所以必定为质数(读者若不明白,可以在温习一下质数的性质!);m/i,是将m分解为一个数shu乘以质因数,然后通过for和while循环继续寻找shu的质因数!直到找不到则循环结束,然后按格式输出就好!=====================================================================*/

2 0
原创粉丝点击