溫馨提示×

c語言如何分解質因數(shù)程序

小億
87
2024-10-11 17:42:16
欄目: 編程語言

在C語言中,分解質因數(shù)的程序可以通過一個簡單的算法實現(xiàn)。以下是一個示例程序,它接受一個整數(shù)作為輸入,并輸出其所有質因數(shù):

#include <stdio.h>
#include <stdbool.h>

// 函數(shù)聲明
void primeFactors(int n);
bool isPrime(int num);

int main() {
    int number;
    printf("請輸入一個整數(shù): ");
    scanf("%d", &number);

    printf("質因數(shù)分解結果: ");
    primeFactors(number);

    return 0;
}

// 分解質因數(shù)的函數(shù)
void primeFactors(int n) {
    for (int i = 2; i <= n; i++) {
        // 如果i是n的因數(shù),并且i是質數(shù)
        if (n % i == 0 && isPrime(i)) {
            printf("%d ", i);
            n /= i; // 更新n的值
        }
    }
}

// 判斷一個數(shù)是否為質數(shù)的函數(shù)
bool isPrime(int num) {
    if (num <= 1) {
        return false;
    }
    for (int i = 2; i * i <= num; i++) {
        if (num % i == 0) {
            return false;
        }
    }
    return true;
}

這個程序首先定義了一個primeFactors函數(shù),它接受一個整數(shù)n作為參數(shù),并輸出其所有質因數(shù)。在這個函數(shù)中,我們使用一個循環(huán)從2開始遍歷到n,并檢查每個數(shù)是否是n的因數(shù)以及是否是質數(shù)。如果是,我們就輸出這個數(shù),并更新n的值。

我們還定義了一個輔助函數(shù)isPrime,用于判斷一個數(shù)是否為質數(shù)。這個函數(shù)接受一個整數(shù)num作為參數(shù),并返回一個布爾值,表示num是否為質數(shù)。在這個函數(shù)中,我們首先檢查num是否小于等于1,如果是,則返回false。然后,我們使用一個循環(huán)從2開始遍歷到sqrt(num),并檢查每個數(shù)是否是num的因數(shù)。如果是,則返回false。如果循環(huán)結束后沒有找到任何因數(shù),則返回true

main函數(shù)中,我們從用戶那里獲取一個整數(shù),并調用primeFactors函數(shù)來分解其質因數(shù)。然后,我們輸出分解結果。

0