溫馨提示×

C語言中因子分解的邊界條件處理

小樊
82
2024-09-12 12:30:14
欄目: 編程語言

在C語言中,因子分解是將一個整數(shù)分解為若干個較小的整數(shù)(因子)的乘積。當處理邊界條件時,需要注意以下幾點:

  1. 輸入的整數(shù)應該大于0,因為負數(shù)和0沒有因子分解??梢允褂?code>if語句檢查輸入值是否大于0,如果不是,則提示用戶輸入正確的整數(shù)。
int num;
printf("請輸入一個正整數(shù): ");
scanf("%d", &num);

if (num <= 0) {
    printf("輸入錯誤,請輸入一個正整數(shù)。\n");
    return 1;
}
  1. 對于1這個特殊的整數(shù),因子只有1??梢灾苯虞敵鼋Y果,然后結束程序。
if (num == 1) {
    printf("1的因子分解為: 1\n");
    return 0;
}
  1. 在進行因子分解時,需要從2開始遍歷所有可能的因子,直到因子等于或者超過整數(shù)的平方根。這是因為一個整數(shù)的最大因子不會超過它的平方根。
int i;
for (i = 2; i * i <= num; i++) {
    // 分解因子
}
  1. 如果遍歷完所有可能的因子后,整數(shù)仍然大于1,說明它本身就是一個質數(shù),此時將其作為最后一個因子。
if (num > 1) {
    printf("%d", num);
}

綜上所述,處理邊界條件的代碼如下:

#include<stdio.h>

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

    if (num <= 0) {
        printf("輸入錯誤,請輸入一個正整數(shù)。\n");
        return 1;
    }

    if (num == 1) {
        printf("1的因子分解為: 1\n");
        return 0;
    }

    printf("%d的因子分解為: ", num);
    int i;
    for (i = 2; i * i <= num; i++) {
        while (num % i == 0) {
            printf("%d * ", i);
            num /= i;
        }
    }

    if (num > 1) {
        printf("%d", num);
    }

    printf("\n");
    return 0;
}

0