用C++编写一个判断键盘输入的正整数是否为素数的代码
时间: 2024-05-15 10:14:57 浏览: 200
```
#include <stdio.h>
#include <stdbool.h>
bool is_prime(int num) {
if (num < 2) {
return false;
}
for (int i = 2; i * i <= num; i++) {
if (num % i == 0) {
return false;
}
}
return true;
}
int main() {
int num;
printf("请输入一个正整数:");
scanf("%d", &num);
if (is_prime(num)) {
printf("%d是素数\n", num);
} else {
printf("%d不是素数\n", num);
}
return 0;
}
```
相关问题
用C++编写以下程序:编写函数bool IsPrime(int Num),其功能是判断整数Num是否是素数(假定1是素数),是则返回true否则返回false。 编写主函数实现如下功能:从键盘输入个正整数如果输入的是负数则提示“输入的是负数,请输入一个正整数:”),通过调用IsPrime函数判断该数是否是全素数,即该数的各位数字全是素数,如果该数是全素数则输出“该t (应显示输入的具体数据)是全素数!”,否则输出“该数(应显示输入的具体数据)不是全素数!”
以下是代码实现:
```c++
#include <iostream>
#include <cmath>
using namespace std;
bool IsPrime(int Num) {
if (Num <= 1) {
return false;
}
for (int i = 2; i <= sqrt(Num); i++) {
if (Num % i == 0) {
return false;
}
}
return true;
}
bool IsFullPrime(int Num) {
if (Num <= 0) {
return false;
}
while (Num > 0) {
int digit = Num % 10;
if (!IsPrime(digit)) {
return false;
}
Num /= 10;
}
return true;
}
int main() {
int Num;
cout << "请输入一个正整数: ";
cin >> Num;
while (Num <= 0) {
cout << "输入的是负数,请输入一个正整数: ";
cin >> Num;
}
if (IsFullPrime(Num)) {
cout << "该" << Num << "是全素数!" << endl;
} else {
cout << "该数" << Num << "不是全素数!" << endl;
}
return 0;
}
```
首先定义了一个判断素数的函数IsPrime,其中判断素数的方法是从2到sqrt(Num)遍历,如果能被整除则返回false,否则返回true。然后定义了一个判断全素数的函数IsFullPrime,其中先判断输入的数是否为负数,如果是则返回false,然后从输入的数的个位开始遍历,如果遇到某一位不是素数则返回false,否则返回true。最后在主函数中从键盘输入一个正整数,如果输入的是负数则提示重新输入,否则调用IsFullPrime函数判断该数是否为全素数并输出结果。
C++,编写一个哥德巴赫猜想的验证程序,即“任意大于等于6的偶数都能分解为两个素数之和”。 4. 要求:将判断一个整数是否为素数的过程写成一个函数。键盘输入任意一个正偶数,输出它的素数分解,如:输入6,输出6=3+3。 5. 进一步修改程序,输出6到键盘输入的正偶数之间所有偶数的素数分解,如:输入8,输出6=3+3,8=3+5。
下面是 C++ 的代码实现:
```cpp
#include <iostream>
#include <cmath>
using namespace std;
bool isPrime(int n) {
if (n < 2) return false;
for (int i = 2; i <= sqrt(n); i++) {
if (n % i == 0) return false;
}
return true;
}
int main() {
int n;
cout << "请输入一个正偶数:";
cin >> n;
if (n % 2 != 0 || n < 6) {
cout << "输入错误,请输入一个大于等于6的正偶数" << endl;
return 0;
}
for (int i = 3; i <= n / 2; i += 2) {
if (isPrime(i) && isPrime(n - i)) {
cout << n << "=" << i << "+" << n - i << endl;
}
}
return 0;
}
```
首先,我们定义了一个函数 `isPrime(int n)`,用来判断一个数是否为素数。接着,在 `main` 函数中,我们先输入一个正偶数 `n`,并进行判断,如果输入错误则输出错误信息并退出程序。
接着,我们从 3 开始遍历到 `n / 2`,每次增加 2,因为偶数只有可能由奇数和奇数相加得到。对于每个奇数 `i`,我们判断 `i` 和 `n - i` 是否都为素数,如果是,则输出素数分解。
最后,我们返回 0,表示程序正常结束。如果你想要输出 6 到 `n` 之间所有偶数的素数分解,只需要在 `main` 函数中增加一个循环即可。
阅读全文