-1

メモリが不足している素数性テスト ルーチンがあり、バーフィングしている値を見つけたいのですが、出力できません。関連するコード フラグメント:

try{
            // truncate left to right
            for( int xTruncation = 1; xTruncation < lenValue; xTruncation++ ){
                integerValue[0]--;
                long value = Arithmetic.integerToLong10( integerValue );
                if( ! Numbers.primeIs( value ) ) continue NextPermutation; // the number is not prime
            }
            integerValue[0] = lenValue; // restore length

            // truncate right to left
            for( int xTruncation = 1; xTruncation < lenValue; xTruncation++ ){
                Arithmetic.integerReduce( integerValue, 1 );
                long value = Arithmetic.integerToLong10( integerValue );
                if( ! Numbers.primeIs( value ) ) continue NextPermutation; // the number is not prime
            }
} catch( Throwable t ) {
    System.out.println( "last value: " + nValue );
}

出力は次のとおりです。

23
37
73
313
317
373
797
3137
3797
739397
Exception in thread "main" java.lang.OutOfMemoryError: Java heap space
    at cra.common.Numbers_jsc.factor(Numbers.java:153)
    at cra.common.Numbers_jsc.primeIs(Numbers.java:78)
    at Euler50.Euler_37(Euler50.java:803)
    at Euler50.main(Euler50.java:15)
    at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
    at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:57)
    at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
    at java.lang.reflect.Method.invoke(Method.java:601)
    at com.intellij.rt.execution.application.AppMain.main(AppMain.java:120)

catch 句の System.out.println が呼び出されることはありません。問題のある値を出力するにはどうすればよいですか?

4

1 に答える 1