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

//矩阵基础
/*
==================================================================
题目:输入一个正整数,将其分解为质因式,如:60=2*2*3*5;若本身是质数,则输出
如:307是一个质数!
==================================================================
*/
#include
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;i1,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的质因数!直到找不到则循环结束,然后按格式输出就好!
=====================================================================
*/

你可能感兴趣的:(C语言—基本算法)