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