编写函数 boolIsPrime(int Num),其功能是判断整数 Num 是否是素数(假定1是素数),是则返回 true 否则返回 false。编写主函数实现如下功能:从键盘输入一个正整数如果输入的是负数则提示“输入的是负数,请输入一个正整数:”),通过调用 IsPrime函数判断该数是否是全素数,即该数的各位数字全是素数,如果该数是全素数则输出“该(应显示输入的具体数据) 是全素数!”,否则输出“该数(应显示输入的具体数据)不是全素数!”
时间: 2024-02-27 12:57:12 浏览: 64
好的,以下是代码实现:
```c++
#include<iostream>
using namespace std;
bool IsPrime(int Num){
if(Num<=1) return false;//1不是素数
for(int i=2;i*i<=Num;i++)//从2开始枚举到sqrt(Num)
if(Num%i==0) return false;
return true;
}
bool IsFullPrime(int Num){
while(Num){//判断每一位是否为素数
if(!IsPrime(Num%10)) return false;//取余数得到最后一位数,判断是不是素数
Num/=10;//去掉最后一位数
}
return true;
}
int main(){
int Num;
do{
cout<<"请输入一个正整数: "<<endl;
cin>>Num;
if(Num<0) cout<<"输入的是负数,请输入一个正整数!"<<endl;
}while(Num<0);
if(IsFullPrime(Num)) cout<<"该数 "<<Num<<" 是全素数!"<<endl;
else cout<<"该数 "<<Num<<" 不是全素数!"<<endl;
return 0;
}
```
解释如下:
1. 首先定义函数 `IsPrime` 判断一个数是否是素数,返回值为 true 或 false 。
2. 然后定义函数 `IsFullPrime` 判断一个数的每一位是否为素数,返回值为 true 或 false。
在 `IsFullPrime` 函数中,我们用一个 while 循环遍历该数的每一位,用 `Num%10` 得到最后一位数,再调用 `IsPrime` 函数判断该位是否为素数。在每次循环结束时,我们用 `Num/=10` 去掉最后一位数。
3. 在主函数中,我们用 do-while 循环,不断输入正整数,如果输入的是负数则提示重新输入。然后调用 `IsFullPrime` 函数判断该数是否为全素数,输出相应的结果。
注意:在题目中给出“假定1是素数”,因此在 `IsPrime` 函数中需要加上 `Num<=1` 的判断。
运行结果:
```
请输入一个正整数:
-3
输入的是负数,请输入一个正整数!
请输入一个正整数:
1447
该数 1447 是全素数!
```
阅读全文