判断一个数是不是质数,以及判断回文质数?

文章介绍了如何在C++中编写isPrime和isHui函数,分别用于判断一个数是否为质数和回文数,以及如何在main函数中结合这两个函数测试数字。
摘要由CSDN通过智能技术生成

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是否能够被除了1x本身之外的数整除。

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;
		}
	} 
	
}

总结:【质数+回文数】

以上两个判断方法经常用,还是记住为好!

  • 9
    点赞
  • 8
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值