码迷,mamicode.com
首页 > 编程语言 > 详细

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

时间:2017-07-19 23:40:25      阅读:205      评论:0      收藏:0      [点我收藏+]

标签:抽象   scanf   整数   输出   amp   data-   基本   stdio.h   print   

//矩阵基础
/*
==================================================================
题目:输入一个正整数。将其分解为质因式,如: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的质因数!

直到找不到则循环结束,然后按格式输出就好! ===================================================================== */


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

标签:抽象   scanf   整数   输出   amp   data-   基本   stdio.h   print   

原文地址:http://www.cnblogs.com/mthoutai/p/7208396.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!