质因数(素因数或质因子):即除 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: