1.判断质数代码:
//这段代码使用了一个名为isPrime的函数来判断一个数是否为质数。
#include <bits/stdc++.h>
using namespace std;
int isPrime(int x){ //把判断是不是质数封装成了isPrime函数。
int i;
for(i=2;i<=sqrt(x);i++){
if(x%i==0) break;
}
if(i<=sqrt(x)) return 0;//找到了i,x不是质数,函数返回0。
else return 1;//没找到这样的i,x是质数,函数返回1。
}
int main() {
int num;
printf("请输入一个整数:");
scanf("%d", &num);
if (isPrime(num)) {
printf("%d是素数。\n", num);
} else {
printf("%d不是素数。\n", num);
}
return 0;
}
chatGPT解释:
这段代码使用了一个名为isPrime
的函数来判断一个数是否为质数。现在,让我逐行解释代码的工作原理:
#include <bits/stdc++.h>
这是一个预处理指令,它包含了标准的C++库文件,使我们能够使用C++标准库中的函数和类。
using namespace std;
这是一个命名空间声明,它允许我们在代码中直接使用std
命名空间中的元素,而无需在每个标识符前添加std::
。
int isPrime(int x){
这是函数的定义,它接受一个整数参数x
并返回一个整数值。函数名为isPrime
,用于判断x
是否为质数。
int i; for(i=2;i<=sqrt(x);i++){
这是一个for
循环,它从2
开始迭代,直到i
的值大于x
的平方根为止。循环变量i
用于逐个测试x
是否能够被除了1
和x
本身之外的数整除。
if(x%i==0) break;
在循环中,使用模运算x % i
来检查x
是否能够被i
整除。如果能够整除,说明x
不是质数,那么代码会跳出循环,继续执行下面的语句。
}
循环结束的大括号,标志着循环的结束。
if(i<=sqrt(x)) return 0;
这是一个条件判断语句,如果循环结束后,i
的值小于或等于x
的平方根,说明x
能够被一个小于或等于它的数整除,因此x
不是质数。在这种情况下,函数会返回0
。
else return 1;
如果条件判断为假,即x
不能被任何小于或等于它的数整除,说明x
是质数。在这种情况下,函数会返回1
。
}
isPrime
函数的定义结束。
int main(){
这是程序的主函数,main
函数是程序的入口点。
此处省略了main
函数中的其他代码,你可以在此处添加你的代码。
}
main
函数的定义结束。
这就是这段代码的逐行解释。它定义了一个名为isPrime
的函数,用于判断一个数是否为质数。你可以在main
函数中调用isPrime
函数并进行相关测试。
2.判断回文数代码:
#include <bits/stdc++.h>
using namespace std;
//封装一个isPrime函数,判断是否是质数。
int isPrime(int x){
int i;
for(i=2;i<=sqrt(x);i++){
if(x%i==0) break;
}
if(i<=sqrt(x)) return 0; //x不是质数
else return 1; //x是质数
}
//封装一个isHui函数,判断是否是回文数。
int isHui(int x){
int num=0; //用于记录翻转过程值的实时变化。注意:这里一定要赋初值0,否则会出现未定义行为,使测试用例报WA错。
int xx=x; //先存一下x的值。
while(x!=0){
num*=10;
num+=x%10;
x/=10;
}
if(num!=xx) return 0;//不是回文数
else return 1;//是回文数
}
//主函数,程序入口。
int main(){
int m,n;
cin>>m>>n;
for(int i=m;i<=n;i++){
if(isPrime(i)&&isHui(i)){
cout<<i<<endl;
}
}
}
总结:【质数+回文数】
以上两个判断方法经常用,还是记住为好!