求质因数(正整数)

质因数(素因数或质因子):即除 1 以外能整除给定正整数的质数。(1 既不是素数,也不是合数)

质数:自然数中除了1和它本身以外不再有其他的除数能整除。

合数:自然数中除了能被1和本身整除外,还能被其他的数整除(不包括0)的数。

质数:2、3、5、7、11、13、17、19...

合数:4、6、8、9、10、12、14、15、16...

例:

  6的质因子是2、3。(6 = 2 × 3)

  12的质因子是2、3。(12 = 2 × 2 x 3)

  15的质因子是3、5。(15 = 3 × 5)

求质因数方法:

      短除法(http://baike.baidu.com/link?url=kjiJwp_p0UQGFzNIQvnW1C7zSMmJujYA66w8zuEqyLPS-34NcFtJ_1MfaeDLvA1DYY66xq686fo3OIcdHl7Fy_)

代码: 

 1 #include<stdio.h>
 2 #include<math.h>
 3 
 4 //求素数
 5 int sushu(int n){
 6     int i;    
 7     for(i = 2; i <= sqrt(n); i++){
 8         if(n % i == 0){
 9             return 0;
10         }    
11     }
12     return 1;        
13 } 
14 //求质因数 
15 void zhiyinshu(int n){
16     int i;
17     if( n == 1){
18         printf("	 1 既不是素数也不是合数
");
19     }else{
20         printf("
 %d 的质因素有:",n);
21         for(i = 2; i <= n; i++){
22             if(n % i == 0){
23                 if( sushu(i) == 1){
24                     printf("	%d",i);
25                 }
26             }
27         }
28     }
29 }
30 //主函数 
31 int main(){
32     int n = 0;
33     
34     while(n < 1){
35         printf("
请输入n的值:(1 < n)
	n = ");
36         scanf("%d", &n);
37     }
38     zhiyinshu(n); //求质因数        
39     return 0;
40 }

运行结果1:
       

运行结果2:

        

原文地址:https://www.cnblogs.com/yuguibin/p/5402713.html