最后两个点超时了!!麻烦大佬看一眼
查看原帖
最后两个点超时了!!麻烦大佬看一眼
1264899
b1adez楼主2024/1/25 23:08
#include <stdio.h>
#include <iostream>
#include <cmath>
#include <vector>
using namespace std;

bool isPrime(int num){
	if(num<=1){//小等于1都不是质数 
		return false;
	}
	if(num==2){//2是最小质数 
		return true;
	}
	if(num%2==0){//排除所有偶数 
		return false;
	}
	
	int sqrtNum = sqrt(num);
	for(int i=3;i<=sqrtNum;i++){
		if(num%i==0){
			return false;//false直接就结束所有循环了,下面的true也不会执行 
		}
	}
	return true;
	
}
//此题给定范围都在int之内,所以使用反转取等来判断回文数
bool isHuiwen(int num){
	int temp = num; 
	int reverse = 0;
	while(temp!=0){//num==0的时候就是num所有位都被取出了 
		reverse = reverse*10+temp%10;
		temp/=10;
	}
	if(num==reverse){
		return true;
	}
	return false;//
} 

int main(){
	int a,b;
	cin>>a>>b;//范围
	for(int i=a;i<=b;i++){
		if(isPrime(i)&&isHuiwen(i)){//是质数也是回文数 
			cout<<i<<endl;
		}
	} 
}
2024/1/25 23:08
加载中...