Little_Cabbage @ 2023-03-12 11:34:01
开了O2也过不了
#include <bits/stdc++.h>
#include <set>
using namespace std;
const int N = 1e8;
long long n, m, l, y, sum;
set<long long> s;
bool f[N];
void ff(long long l, long long r) {
for (int i = l; i <= r; i++) {
long long x = 0;
for (int j = 1; j <= i; j *= 10) {
if (i / j == 0)
break;
x++;
}
if (x == 1) {
for (int d1 = 5; d1 <= 9; d1 += 2) {
sum = d1;
// cout << sum << ' ';
s.insert(sum);
}
}
if (x == 2) {
for (int d1 = 1; d1 <= 9; d1 += 2) {
sum = 10 * d1 + d1;
// cout << sum << ' ';
s.insert(sum);
}
}
if (x == 3) {
for (int d1 = 1; d1 <= 9; d1 += 2)
for (int d2 = 0; d2 <= 9; d2++) {
sum = 100 * d1 + 10 * d2 + d1;
// cout << sum << ' ';
s.insert(sum);
}
}
if (x == 4) {
for (int d1 = 1; d1 <= 9; d1 += 2)
for (int d2 = 0; d2 <= 9; d2++) {
sum = 1000 * d1 + 100 * d2 + 10 * d2 + d1;
// cout << sum << ' ';
s.insert(sum);
}
}
if (x == 5) {
for (int d1 = 1; d1 <= 9; d1 += 2)
for (int d2 = 0; d2 <= 9; d2++)
for (int d3 = 0; d3 <= 9; d3++) {
sum = 10000 * d1 + 1000 * d2 + 100 * d3 + 10 * d2 + d1;
// cout << sum << ' ';
s.insert(sum);
}
}
if (x == 6) {
for (int d1 = 1; d1 <= 9; d1 += 2)
for (int d2 = 0; d2 <= 9; d2++)
for (int d3 = 0; d3 <= 9; d3++) {
sum = 100000 * d1 + 10000 * d2 + 1000 * d3 + 100 * d3 + 10 * d2 + d1;
// cout << sum << ' ';
s.insert(sum);
}
}
if (x == 7) {
for (int d1 = 1; d1 <= 9; d1 += 2)
for (int d2 = 0; d2 <= 9; d2++)
for (int d3 = 0; d3 <= 9; d3++)
for (int d4 = 0; d4 <= 9; d4++) {
sum = 1000000 * d1 + 100000 * d2 + 10000 * d3 + 1000 * d4 + 100 * d3 + 10 * d2 + d1;
// cout << sum << ' ';
s.insert(sum);
}
}
if (x == 8) {
for (int d1 = 1; d1 <= 9; d1 += 2)
for (int d2 = 0; d2 <= 9; d2++)
for (int d3 = 0; d3 <= 9; d3++)
for (int d4 = 0; d4 <= 9; d4++) {
sum = 10000000 * d1 + 1000000 * d2 + 100000 * d3 + 10000 * d4 + 1000 + d4 * 100 + d3 + 10 * d2 + d1;
// cout << sum << ' ';
s.insert(sum);
}
}
}
}
int main() {
scanf("%lld%lld", &n, &m);
ff(n, m);
f[1] = true;
for (int i = 2; i <= m; i++)
if (!f[i])
for (int j = i * 2; j <= m; j += i)
f[j] = true;
// for (int i = 1; i <= m; i++)
// if (!f[i])
// cout << i << ' ';
set<long long>::iterator it = s.begin();
while (it != s.end()) {
if (*it > m)
break;
if (!f[*it] && *it >= n && *it <= m)
printf("%lld\n", *it);
it++;
}
return 0;
}
by ljk8886 @ 2023-03-12 11:59:41
参考一下我的代码吧
#include<iostream>
using namespace std;
bool fs(int n)
{
if(n==1)return false;
for(int i=2;i*i<=n;i++)
{
if(n%i==0)return false;
}
return true;
}
int main()
{
int a,b;
cin>>a>>b;
for(int i=a;i<=min(b,9989899);i++)
{
if(i%2==0)continue;
int t=i,w=0;
while(t>0)
{
int h=t%10;
w*=10;
w+=h;
t/=10;
}
if(w==i&&fs(i))cout<<i<<endl;
}
return 0;
}
by Little_Cabbage @ 2023-03-15 11:50:30
@ljk8886 求注释
by ljk8886 @ 2023-03-16 18:17:06
#include<iostream>
using namespace std;
bool fs(int n)//判断质数函数
{
if(n==1)return false;//1不是质数
for(int i=2;i*i<=n;i++)//从2到n的平方根进行枚举
{
if(n%i==0)return false;
}
return true;
}
int main()
{
int a,b;
cin>>a>>b;
for(int i=a;i<=min(b,9989899/*范围内最大的满足要求数*/);i++)
{
if(i%2==0)continue;
int t=i,w=0;
while(t>0)//i的倒序数
{
int h=t%10;
w*=10;
w+=h;
t/=10;
}
if(w==i&&fs(i))cout<<i<<endl;//满足两个要求就输出
}
return 0;
}
by Little_Cabbage @ 2023-03-17 22:17:07
@ljk8886 谢谢