Loading [MathJax]/extensions/tex2jax.js

搜尋此網誌

[C/C++][判斷質數與質因數分解]

isprime()先判斷是否為質數,若否,則用prime()找出所有質因數,所有質因數用乘積表示,若相同的質因數用次方表示還要修改一下,MH太懶了,自己動手改吧

  1. /*
  2. * File Name: PrimeFactorDecomposition.c
  3. * Author: MH
  4. * Since 2011/05/23
  5. * Toolkit: Dev C++
  6. */
  7.  
  8. # include <stdlib.h>
  9. # include <stdio.h>
  10. # include <math.h>
  11.  
  12. int isprime(int);
  13. void prime(int);
  14.  
  15. int main(){
  16.  
  17.     int input;
  18.  
  19.     while(1){
  20.  
  21.         printf("Please input an integer :\n");
  22.         scanf("%d", &input);
  23.  
  24.         if (input <= 1)
  25.             printf("\ninput must larger than 1\n\n");
  26.  
  27.  
  28.         else if(isprime(input)==0){    // input is not a prime number
  29.  
  30.             printf("\n%d is not a prime\n\n", input);
  31.             printf("%d = ", input);
  32.             prime(input);
  33.             printf("\n\n");
  34.  
  35.         }
  36.  
  37.         else    // input is a prime number
  38.             printf("\n%d is a prime number\n\n", input);
  39.  
  40.         system("PAUSE");
  41.         system("CLS");
  42.  
  43.     }
  44.  
  45.     return 0;
  46. }
  47.  
  48. // check if input is a prime number or not
  49.  
  50. int isprime(int input){
  51.  
  52.     int i, first=1;
  53.  
  54.     for(i=2; i<=sqrt(input); i++){
  55.  
  56.         if(input%i==0){    // not a prime number
  57.             return 0;
  58.         }
  59.  
  60.     }
  61.  
  62.     return 1;
  63. }
  64.  
  65. // find all the prime factors
  66.  
  67. void prime(int input){
  68.  
  69.     int i;
  70.  
  71.     for(i=2; i<=sqrt(input); i++){
  72.  
  73.         while(input!=i){    // find all same prime factors
  74.  
  75.             if(input%i==0){    // i is a prime number of input
  76.                 printf("%d * ", i);
  77.                 input = input/i;    // divide prime factor
  78.             }
  79.  
  80.             else    // not a prime factor
  81.                 break;
  82.  
  83.         }
  84.  
  85.     }
  86.  
  87.     printf("%d", input);    // the last prime factor
  88. }

沒有留言:

張貼留言