有没有大佬讲一下为什么N取太大直接就编译失败了

P1217 [USACO1.5] 回文质数 Prime Palindromes

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 谢谢大佬


|