wangxiangquan @ 2024-08-07 18:26:44
#include <bits/stdc++.h>
using namespace std;
int main()
{
long long a,b,f;
scanf("%lld %lld",&a,&b);
if(a%2==0) a++;
for(int i=a;i<=b;i+=2)
{
f=1;
if(i%2==0) continue;
for(int j=2;j<=sqrt(i);j++)
{
if(i%j==0)
{
f=0;
break;
}
}
if(f==1)
{
int s=0,x=i;
while(x!=0)
{
s=s*10+x%10;
x=x/10;
}
if(s==i) printf("%d\n",i);
}
}
return 0;
}
by Libingyue2011 @ 2024-08-09 08:07:44
Hint 1: Generate the palindromes and see if they are prime.
提示 1: 找出所有的回文数再判断它们是不是质数(素数).
产生长度为
for (d1 = 1; d1 <= 9; d1+=2) { // 只有奇数才会是素数
for (d2 = 0; d2 <= 9; d2++) {
for (d3 = 0; d3 <= 9; d3++) {
palindrome = 10000*d1 + 1000*d2 +100*d3 + 10*d2 + d1;//(处理回文数...)
}
}
}
by Libingyue2011 @ 2024-08-09 08:08:40
@wangxiangquan
by shuaideiyibi666 @ 2024-08-09 16:51:57
#include<iostream>
#include<math.h>
using namespace std;
bool sushu(long long int n){
for(int i=2;i<=sqrt(n);i++){
if(n%i==0) return 0;
}
return 1;
}
int main(){
long long int a,b;
cin>>a>>b;
int d1,d2,d3,d4;
long long int sum;
//1
for(d1=5;d1<=9;d1+=2){
if(sushu(d1)&&d1>=a&&d1<=b){
cout<<d1<<endl;
}
}
//2
for(d1=1;d1<=9;d1+=2){
sum=d2*10+d1;
if(sushu(sum)&&sum>=a&&sum<=b){
cout<<sum<<endl;
}
}
//3
for(d1=1;d1<=9;d1+=2){
for(d2=0;d2<10;d2++){
sum=d1+d2*10+d1*100;
if(sushu(sum)&&sum>=a&&sum<=b){
cout<<sum<<endl;
}
}
}
//4
for(d1=1;d1<=9;d1+=2){
for(d2=0;d2<10;d2++){
sum=d1*1000+d2*100+d2*10+d1;
if(sushu(sum)&&sum>=a&&sum<=b)
{
cout<<sum<<endl;
}
}
}
//5
for (d1 = 1; d1 <= 9; d1+=2) { // 只有奇数才会是素数
for (d2 = 0; d2 <= 9; d2++) {
for (d3 = 0; d3 <= 9; d3++) {
sum=10000*d1 + 1000*d2 +100*d3 + 10*d2 + d1;
if(sushu(sum)&&sum>=a&&sum<=b){
cout<<sum<<endl;
}
}
}
}
//6
for (d1 = 1; d1 <= 9; d1+=2) { // 只有奇数才会是素数
for (d2 = 0; d2 <= 9; d2++) {
for (d3 = 0; d3 <= 9; d3++) {
sum= 100000*d1 + 10000*d2 +1000*d3 + 100*d3+10*d2 + d1;
if(sushu(sum)&&sum>=a&&sum<=b){
cout<<sum<<endl;
}
}
}
}
//7
for (d1 = 1; d1 <= 9; d1+=2) { // 只有奇数才会是素数
for (d2 = 0; d2 <= 9; d2++) {
for (d3 = 0; d3 <= 9; d3++) {
for(d4=0;d4<10;d4++){
sum=1000000*d1 + 100000*d2 +10000*d3 +1000*d4+ 100*d3+10*d2 + d1;
if(sushu( sum)&&sum>=a&&sum<=b){
cout<<sum<<endl;
}
}
}
}
}
//8
for (d1 = 1; d1 <= 9; d1+=2) { // 只有奇数才会是素数
for (d2 = 0; d2 <= 9; d2++) {
for (d3 = 0; d3 <= 9; d3++) {
for(d4=0;d4<10;d4++)
{
sum=10000000*d1 + 1000000*d2 +100000*d3 +10000*d4+1000*d4+ 100*d3+10*d2 + d1;
if(sushu(sum)&&sum>=a&&sum<=b){
cout<<sum<<endl;
}
}
}
}
}
}
@Libingyue2011 66T_T
by Libingyue2011 @ 2024-08-09 17:09:30
@fmnawuind2
枚举 2 位数写错了。
下面是你的。
//2
for(d1=1;d1<=9;d1+=2){
sum=d2/*这里改为d1*/*10+d1;
if(sushu(sum)&&sum>=a&&sum<=b){
cout<<sum<<endl;
}
正确的。
//2
for(d1=1;d1<=9;d1+=2){
sum=d1*10+d1;
if(sushu(sum)&&sum>=a&&sum<=b){
cout<<sum<<endl;
}
这是个需要检查的地方。
还有,USACO 的第一个点通常是样例,你的第一个点没过,你去测下样例啊!
求关注。
@fmnawuind2
by shuaideiyibi666 @ 2024-08-09 17:55:56
@Libingyue2011 ok 了谢谢检查了很久都没检查到,不知道为什么运行测试样例是对的但是就是过不了测试