有没有大佬讲一下为什么N取太大直接就编译失败了
查看原帖
有没有大佬讲一下为什么N取太大直接就编译失败了
1404467
Lilindong楼主2024/7/30 14:36
#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;  
}  
2024/7/30 14:36
加载中...