steamdream @ 2024-06-03 16:00:57
#include<bits/stdc++.h>
using namespace std;
bool prime(int n)
{
if(n==1) return false;
for(int i=2;i<=sqrt(n);i++)
{
if(n%i==0)
return false;
}
return true;
}
bool huiwen(int n)
{
int m=0,x=n;
while(x!=0)
{
m=m*10+x%10;
x/=10;
}
return m==n;
}
int main()
{
int a,b;
cin>>a>>b;
for(int i=a;i<=b;i++)
{
if(prime(i)&&huiwen(i))
{
cout<<i<<endl;
}
}
return 0;
}
为啥66分???
by kervinyan @ 2024-06-03 16:06:17
@gcdgcd 不知道,但是参考如下
by kervinyan @ 2024-06-03 16:06:37
@gcdgcd ```
bool ispa(int x) //判断回文数的函数 { int num[20]; int n = 0; while (x)//用数组储存每一位数 { num[++n] = x % 10; x /= 10; } for(int i=1,j=n;i<j;i++,j--) if(num[i]^num[j]) return false; return true; } bool ispr(int x) //判断质数的函数 { int i; for(i=2;i*i<=x;i++) if(x%i==0) return false; if(x<=1) return false; return true; } int main() //主函数 { int a, b; bool pa = false;//初始化pa pr为false bool pr = false; scanf("%d %d", &a, &b); if(a==2) printf("%d\n",a); if(!(a&1)) a++; if(b>9999999) b=9999999; for (int i = a;i <= b; i+=2)//偶数一定不是质数,缩小范围(a一定大于等于5 所以不需要考虑2) { pa = ispa(i);//判断回文数 if (pa)//是回文数就再判断是不是质数 pr = ispr(i); if (pr)//是质数就输出 printf("%d\n",i); pa = false;//重置pa和pr pr = false; } return 0; }
by kervinyan @ 2024-06-03 16:07:17
#include<stdio.h>
#include <stdbool.h>
bool ispa(int x) //判断回文数的函数
{
int num[20];
int n = 0;
while (x)//用数组储存每一位数
{
num[++n] = x % 10;
x /= 10;
}
for(int i=1,j=n;i<j;i++,j--)
if(num[i]^num[j]) return false;
return true;
}
bool ispr(int x) //判断质数的函数
{
int i;
for(i=2;i*i<=x;i++)
if(x%i==0) return false;
if(x<=1) return false;
return true;
}
int main() //主函数
{
int a, b;
bool pa = false;//初始化pa pr为false
bool pr = false;
scanf("%d %d", &a, &b);
if(a==2) printf("%d\n",a);
if(!(a&1)) a++;
if(b>9999999) b=9999999;
for (int i = a;i <= b; i+=2)//偶数一定不是质数,缩小范围(a一定大于等于5 所以不需要考虑2)
{
pa = ispa(i);//判断回文数
if (pa)//是回文数就再判断是不是质数
pr = ispr(i);
if (pr)//是质数就输出
printf("%d\n",i);
pa = false;//重置pa和pr
pr = false;
}
return 0;
}
by kervinyan @ 2024-06-03 16:08:26
能互关不
by steamdream @ 2024-06-03 16:26:41
OK
by wangqicheng1637 @ 2024-06-10 16:27:55
@kervinyan 27、28、34、35、36、37何必呢? 用一个if就够
if ( pa(i) && pr(i) )
by wangqicheng1637 @ 2024-06-10 16:32:22
@kervinyan 判断回文:
bool huiwen( int x ) //判断回文数
{
if ( x < 0 )
{
return false;
}
if ( x == 0 )
{
return true;
}
string str = to_string(x);
long long len = str.length();
for ( int i = 0; i < len / 2; i ++ )
{
if ( str[i] != str[len - 1 - i] )
{
return false;
}
}
return true;
}
更简单