回文质数问题

提示:文章写完后,目录可以自动生成,如何生成可参考右边的帮助文档


前言

回文数也就是如:101,121等等数 ,质数也就是只能被本身或者1除的数,以下题目是两者的结合


提示:以下是本篇文章正文内容,下面案例可供参考

一、题目

二、方法

1.代码

代码如下(示例):

#include<bits/stdc++.h>
using namespace std;

bool find(int a){  //判断质数
/*
	 if (a <= 1) {
        return false;
    }
    if (a == 2) {
        return true;
    }
    if (a % 2 == 0) {
        return false;
    }
    int sql=(int )sqrt(1.0*a);
	for(int i=3;i<=sql;i+=2){   //质数肯定是奇数,每次加2
	if(a%i==0)
	return false;
	} 
	return true;
*/ 
	int sql=(int )sqrt(1.0*a);
	for(int i=2;i<=sql;i++){ //2之前的都不是,从2开始就行
		if(a%i==0)
		return false;
	} 
	return true;
}

bool hw(int num) {   //判断回文
    int temp = num;
    int ans = 0;
    while (temp > 0) {
        int digit = temp % 10;
        ans= ans * 10 + digit;
        temp /= 10;
    }
    if (ans==num){
    return true;
}
    else{
    return false;}
}

int main(){
	int  a,b;
	cin>>a>>b;
	if (a < 5) a = 5;
    if(b>=9999999) b=9999999;
	for(int i=a;i<=b;i++){
		if(hw(i)&&find(i))//!!!!hw一定要先判断,再判断find质数
		cout<<i<<endl;
	}
	return 0;
}

补充:sqrt函数用来求给定的平方根,因为要判断一个整数是否是质数,只需要检查它是否能被小于或等于它平方根的整数整除。如果不能,那么它就是质数,因为大于它平方根的因子一定会有对应的小于平方根的因子。sqrt() 函数返回的是 x 的平方根,返回值类型是 double 型,所以我这乘了1.0

回文先判断的原因是先对于先判断质数来说,可以提高代码的性能,排列方式更加高效。


总结

以上例题,是回文和质数的结合。

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值