【洛谷 入门3】循环结构 P1217 回文质数 Prime Palindromes
作者:互联网
P1217 [USACO1.5]回文质数 Prime Palindromes
输入
5 500
输出
5
7
11
101
131
151
181
191
313
353
373
383
1、判断回文
bool hw(int x)
{
int s=0,y=x;
while(y!=0)
{
s=s*10+y%10;
y=y/10;
}
if(s==x) return 1;
else return 0;
}
2、判断素数
bool prime(int x)
{
if(x==1) return 0;
for(int i=2;i<=sqrt(x);i++)
{
if(x%i==0) return 0;
}
return 1;
}
3、完整代码
#include<bits/stdc++.h>
using namespace std;
bool hw(int x)
{
int s=0,y=x;
while(y!=0)
{
s=s*10+y%10;
y=y/10;
}
if(s==x) return 1;
else return 0;
}
bool prime(int x)
{
if(x==1) return 0;
for(int i=2;i<=sqrt(x);i++)
{
if(x%i==0) return 0;
}
return 1;
}
int main()
{
int a,b;
cin>>a>>b;
for(int i=a;i<=b;i++)
{
if(i==9989900) break;
if(hw(i)&&prime(i)) cout<<i<<endl;
}
return 0;
}
如果不加if(i==9989900) break;
这一步,最后一个测试点会一直TLE。然后看了题解,选择直接特判了,如果i是9989900直接退出。
注意: 先判断回文是因为回文比较少,减少判断时间(在c++中,if语句里面如果有&&符号,如果前面一个判断为假,那么程序不会再进行后面的判断)
标签:Prime,10,Palindromes,return,9989900,int,质数,bool,回文 来源: https://blog.csdn.net/m0_51631639/article/details/113528035