新闻资讯

质量为本、客户为根、勇于拼搏、务实创新

< 返回新闻资讯列表

C语言完全平方数代码怎么优化,c语言完全平方数且两位数相同

发布时间:2024-06-20 01:21:26

C语言完全平方数代码怎样优化

在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是一个完全平方数
", num);
    } else {
        printf("%d不是一个完全平方数
", 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是一个完全平方数
", num);
    } else {
        printf("%d不是一个完全平方数
", num);
    }
    return 0;
}

这段代码使用了二分查找的方式来判断一个数是否是为完全平方数,时间复杂度为O(logn),比上一种方法更加高效。