C语言完全平方数代码如何优化

   2024-10-08 8150
核心提示:在C语言中判断一个数是否为完全平方数,可以通过以下代码实现:#include stdio.hint isPerfectSquare(int num) {int i = 1;while

在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),比上一种方法更加高效。

 
举报打赏
 
更多>同类维修大全
推荐图文
推荐维修大全
点击排行

网站首页  |  关于我们  |  联系方式网站留言    |  赣ICP备2021007278号