中文字幕av专区_日韩电影在线播放_精品国产精品久久一区免费式_av在线免费观看网站

溫馨提示×

C語言完全平方數代碼如何優化

小樊
83
2024-06-20 01:21:26
欄目: 編程語言

在C語言中判斷一個數是否為完全平方數,可以通過以下代碼實現:

#include <stdio.h>

int isPerfectSquare(int num) {
    int i = 1;
    while (num > 0) {
        num -= i;
        i += 2;
    }
    return num == 0;
}

int main() {
    int num;
    printf("請輸入一個整數:");
    scanf("%d", &num);
    if (isPerfectSquare(num)) {
        printf("%d是一個完全平方數\n", num);
    } else {
        printf("%d不是一個完全平方數\n", num);
    }
    return 0;
}

這段代碼使用了一個循環來判斷一個數是否為完全平方數,如果是完全平方數,那么經過循環后num會變成0;否則num會小于0。這種方法比較直接,但不是最優化的方法。

另一種優化的方法是使用二分查找的方式來判斷一個數是否為完全平方數,代碼如下:

#include <stdio.h>

int isPerfectSquare(int num) {
    if (num < 0) {
        return 0;
    }
    
    int left = 0, right = num;
    while (left <= right) {
        long long mid = left + (right - left) / 2;
        long long square = mid * mid;
        
        if (square == num) {
            return 1;
        } else if (square < num) {
            left = mid + 1;
        } else {
            right = mid - 1;
        }
    }
    
    return 0;
}

int main() {
    int num;
    printf("請輸入一個整數:");
    scanf("%d", &num);
    if (isPerfectSquare(num)) {
        printf("%d是一個完全平方數\n", num);
    } else {
        printf("%d不是一個完全平方數\n", num);
    }
    return 0;
}

這段代碼使用了二分查找的方式來判斷一個數是否為完全平方數,時間復雜度為O(logn),比上一種方法更加高效。

0
延安市| 休宁县| 隆回县| 涿鹿县| 池州市| 葫芦岛市| 高密市| 龙陵县| 大冶市| 同江市| 宜昌市| 开鲁县| 西昌市| 诸城市| 固原市| 田阳县| 万全县| 定安县| 张家港市| 伊通| 克什克腾旗| 锡林浩特市| 临泽县| 二手房| 临邑县| 金寨县| 安丘市| 十堰市| 绩溪县| 赣榆县| 南宫市| 怀来县| 元朗区| 福海县| 大新县| 闵行区| 麦盖提县| 荔浦县| 吉安市| 黔东| 双峰县|