给你一个正整数 num 。如果 num 是一个完全平方数,则返回 true ,否则返回 false 。 完全平方数 是一个可以写成某个整数的平方的整数。换句话说,它可以写成某个整数和自身的乘积。 不能使用任何内置的库函数,如 sqrt 。
时间: 2023-05-31 20:07:56 浏览: 152
好的,你的问题是判断一个正整数是否为完全平方数。下面给出代码实现:
```python
def isPerfectSquare(num):
if num < 2:
return True
left, right = 2, num // 2
while left <= right:
mid = (left + right) // 2
guess = mid * mid
if guess == num:
return True
elif guess > num:
right = mid - 1
else:
left = mid + 1
return False
```
以上算法的时间复杂度为 $O(\log n)$,其中 $n$ 是输入的正整数。如果你还有其他问题,欢迎继续提问!
相关问题
给定一个正整数 num,编写一个函数,如果 num 是一个完全平方数,则返回 True,否则返回 False。c语言
在C语言中,你可以通过计算并比较num的平方根来判断它是否为完全平方数。下面是一个简单的实现方法:
```c
#include <stdbool.h>
#include <math.h> // 包含sqrt函数
bool isPerfectSquare(int num) {
if (num <= 0) {
return false;
}
double sqrt_num = sqrt(num);
return sqrt_num * sqrt_num == num; // 检查平方是否等于原数
}
int main() {
int num;
printf("请输入一个正整数: ");
scanf("%d", &num);
if (isPerfectSquare(num)) {
printf("%d 是一个完全平方数.\n", num);
} else {
printf("%d 不是一个完全平方数.\n", num);
}
return 0;
}
```
这个函数首先检查输入是否非负,然后计算其平方根,最后比较这个平方根的平方是否等于原始数值。如果是,则说明是完全平方数。
编写函数 bool IsPrime(int Num),其功能是判断整数Num是否是素数(假定1是素数),是则返回true否则返回false。编写主函数实现如下功能:从键盘输入一个正整数(如果输入的是负数则提示“输入的是负数,请输入一个正整数:”),通过调用IsPrime 数判断该数是否是全素数,即该数的各位数字全是素数,如果该数是全素数则输出“该数(应显示输入的具体数据)是全素数!”,否则输出“该数(应显示输入的具体数据) 不是全素数!”。
可以按照以下方式编写程序:
```C++
#include <iostream>
#include <cmath>
using namespace std;
bool IsPrime(int Num) // 判断Num是否是素数
{
if (Num <= 1) return false; // 1不是素数
int n = sqrt(Num);
for (int i = 2; i <= n; i++)
{
if (Num % i == 0) return false; // 不是素数
}
return true; // 是素数
}
bool IsFullPrime(int Num) // 判断Num是否是全素数
{
if (Num <= 0) return false; // 非正整数不是全素数
while (Num > 0)
{
int digit = Num % 10; // 取出Num的个位数
if (!IsPrime(digit)) return false; // 个位数不是素数,Num不是全素数
Num /= 10; // 去掉Num的个位数
}
return true; // Num的各位数字全是素数,Num是全素数
}
int main()
{
int Num;
cout << "请输入一个正整数:" << endl;
cin >> Num;
while (Num < 0) // 输入的是负数
{
cout << "输入的是负数,请输入一个正整数:" << endl;
cin >> Num;
}
if (IsFullPrime(Num))
{
cout << "该数(" << Num << ")是全素数!" << endl;
}
else
{
cout << "该数(" << Num << ")不是全素数!" << endl;
}
return 0;
}
```
在主函数中,首先输入一个正整数,如果输入的是负数,则提示用户重新输入。然后调用 IsFullPrime 函数判断该数是否是全素数,并根据结果输出相应的提示信息。
注意:此程序假定 1 是素数。
阅读全文