C语言完全平方数代码如何优化
导读:在C语言中判断一个数是否为完全平方数,可以通过以下代码实现: #include <stdio.h> int isPerfectSquare(int num { int i = 1; while (num &g...
在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),比上一种方法更加高效。
声明:本文内容由网友自发贡献,本站不承担相应法律责任。对本内容有异议或投诉,请联系2913721942#qq.com核实处理,我们将尽快回复您,谢谢合作!
若转载请注明出处: C语言完全平方数代码如何优化
本文地址: https://pptw.com/jishu/683246.html