OJ提示时间超限,可以帮我改一下吗
题目描述
因为151 既是一个质数又是一个回文数(从左到右和从右到左是看一样的),所以151 是回文质数.
写一个程序来找出范围a,b间的所有回文质数;
输入
第 1 行: 二个整数 a 和 b .
输出
输出一个回文质数的列表,一行一个.
样例输入
5 500
样例输出
5
7
11
101
131
151
181
191
313
353
373
383
#include
using namespace std;
bool isSymm(int a) {
int j, k=0;
j = a;
while (j > 0) {
k = k*10+ j % 10 ;
j /= 10;
}
if (k == a)return true;
else return false;
}
int main()
{
int a,b,i=2;
cin>>a>>b;
for(;a<=b;a++){
while(a%i!=0 && i<=a-1)
{
i++;
}
if (i>a-1 && isSymm(a))
{
cout<2;
}
return 0;
}
基于Monster 组和GPT的调写:
#include <bits/stdc++.h>
using namespace std;
// 判断是否为回文数
bool isSymm(int a) {
int j = a, k = 0;
while (j > 0) {
k = k * 10 + j % 10;
j /= 10;
}
return k == a;
}
// 判断是否为质数
bool isPrime(int a) {
if (a == 1) return false;
if (a == 2) return true;
for (int i = 2; i <= sqrt(a); i++) {
if (a % i == 0) {
return false;
}
}
return true;
}
int main() {
int a, b;
cin >> a >> b;
for (int i = a; i <= b; i++) {
if (isSymm(i) && isPrime(i)) {
cout << i << endl;
}
}
return 0;
}