搜尋此網誌

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

之前做過判斷質數與質因數分解的程式,那如果不是要列出質因數,而是要列出因數呢?那就更簡單了,把prime()裡的改一改就好了,只要整除就是因數

/*
* File Name: FactorDecomposition.c
* Author: MH
* Since 2011/05/23
* Toolkit: Dev C++
*/

# include <stdlib.h>
# include <stdio.h>
# include <math.h>

int isprime(int);
void factor(int);

int main(){

    int input;

    while(1){

        printf("Please input an integer :\n");
        scanf("%d", &input);

        if (input <= 1)
            printf("\ninput must larger than 1\n\n");

        else if(isprime(input)==0){    // input is not a prime number
            printf("\n%d is not a prime\n\n", input);
            printf("%d's factor are :\n", input);
            prime(input);
            printf("\n\n");
        }
        else    // input is a prime number
            printf("\n%d is a prime number\n\n", input);

        system("PAUSE");
        system("CLS");

    }

    return 0;
}

// check if input is a prime number or not
int isprime(int input){

    int i, first=1;

    for(i=2; i<=sqrt(input); i++){

        if(input%i==0){    // not a prime number
            return 0;
        }

    }

    return 1;
}

// find all the factors
void factor(int input){

    int i;

    for(i=1; i<=input; i++){

        if(input%i==0){    // i is a factor of input
            printf("%d  ", i);
        }

    }
}

沒有留言:

張貼留言