AOJのPrime Quadrupletについて(4つ子素数の問題)

フォーラム(掲示板)ルール
フォーラム(掲示板)ルールはこちら  ※コードを貼り付ける場合は [code][/code] で囲って下さい。詳しくはこちら
grayf
記事: 10
登録日時: 11年前

AOJのPrime Quadrupletについて(4つ子素数の問題)

#1

投稿記事 by grayf » 9年前

http://judge.u-aizu.ac.jp/onlinejudge/d ... sp?id=0222
入力された数字より、小さい4つ子素数のうち尤も大きい数を出力する問題なのですが、Runtime Errorが返されてしまいます。
恐らく、配列の添え字を大きくし過ぎたせいなのだと思うのですが、どのように直せばよいのでしょうか?教えてください。

コード:

#include<stdio.h>
#include<math.h>
#define N 10000000

int main(){
	int a[N];
	int b;
	int i, j, p;
	int c[1000];
	int d[1000];
	p = 1;
	while (1==1){
		scanf("%d", &c[p]);
		if(c[p]!=0)p++;
		else break;
	}
		b = (int)pow(N, 0.5);
		a[0] = -1;
		for (i = 2; i <= b; i++){
			for (j = 2; j <= N/ i; j++){
				a[i*j - 1] = -1;
			}
		}
	for (i = 1; i < p; i++){	
		for (j = c[i];j>0; j--){
			if (a[j - 1] != -1){ 
				if (a[j - 2 - 1] != -1 && a[j - 6 - 1] != -1 && a[j - 8 - 1] != -1){
					d[i] = j;
					j = 0;
				}
			}
		}
		printf("%d\n", d[i]);
	}
	return 0;
}

アバター
みけCAT
記事: 6734
登録日時: 14年前
住所: 千葉県
連絡を取る:

Re: AOJのPrime Quadrupletについて(4つ子素数の問題)

#2

投稿記事 by みけCAT » 9年前

配列の型の前にstaticを付けてスタックを消費しないようにするといいかもしれません。
複雑な問題?マシンの性能を上げてOpenMPで殴ればいい!(死亡フラグ)

grayf
記事: 10
登録日時: 11年前

Re: AOJのPrime Quadrupletについて(4つ子素数の問題)

#3

投稿記事 by grayf » 9年前

回答ありがとうございます。
メモリをこっちで確保すれば、通りました。

閉鎖

“C言語何でも質問掲示板” へ戻る