Lilindong @ 2024-07-30 14:36:14
#include <stdio.h>
#include <stdbool.h>
#include <string.h>
#define N 9999999
int main() {
int i,j,d1,d2,d3,d4,a,sc;
bool pr[N];
memset(pr, 1, sizeof(pr));
pr[0] = pr[1] = false;
for (i = 2; i * i < N; i++) {
if (pr[i]) {
for (j = i * i; j < N; j += i) {
pr[j] = false;
}
}
}
scanf("%d%d", &a,&sc);
if (5 <= sc&&5==a) printf("5\n");
if (7 <= sc&&7>=a) printf("7\n");
if (11 <= sc&&11>=a) printf("11\n");
for (d1 = 1; d1 <= 9; d1 += 2) {
for (d2 = 0; d2 <= 9; d2++) {
int palindrome = 100 * d1 + 10 * d2 + d1;
if (palindrome <= sc && palindrome>=a && pr[palindrome])
printf("%d\n", palindrome);
}
}
for (d1 = 1; d1 <= 9; d1 += 2) {
for (d2 = 0; d2 <= 9; d2++) {
for (d3 = 0; d3 <= 9; d3++) {
int palindrome = 10000 * d1 + 1000 * d2 + 100 * d3 + 10 * d2 + d1;
if (palindrome <= sc && palindrome>=a && pr[palindrome])
printf("%d\n", palindrome);
}
}
}
for (d1 = 1; d1 <= 9; d1 += 2) {
for (d2 = 0; d2 <= 9; d2++) {
for (d3 = 0; d3 <= 9; d3++) {
for (d4 = 0; d4 <= 9; d4++) {
int palindrome = 1000000 * d1 + 100000 * d2 + 10000 * d3 + 1000 * d4 + 100 * d3 + 10 * d2 + d1;
if (palindrome <= sc && palindrome>=a && pr[palindrome])
printf("%d\n", palindrome);
}
}
}
}
return 0;
}
by 残阳如血 @ 2024-07-30 14:40:32
@Lilindong
首先,不要题目标题太长。
编译错误是因为申请了过多内存,并且建议把大数组开在全局域。
by run_away @ 2024-07-30 14:42:15
@Lilindong 在函数里面开数组用的是动态内存,动态内存比较少,所以建议在函数外面用静态的
by _luogu_huowenshuo_ @ 2024-07-30 14:42:48
有可能是数组太大导致的(范围是2146793727--0)
求关
by Lilindong @ 2024-07-30 14:56:20
@残阳如血 谢谢大佬
by Lilindong @ 2024-07-30 14:56:41
@run_away 谢谢大佬