用eratosthenes筛子找到素数

时间:2014-11-07 15:15:29

标签: android

你好,我希望我的应用程序在筛选算法中找到两个数字之间的素数我使用此代码,但它不能正常工作我可以做些什么来改进此代码到我的目标请帮帮我

public int[] GetPrimes() {

    int[] primesData = new int[maxValue+1];
    int[] results    = new int[maxValue];

    int i;
    int result_count = 0;

    for (i=MIN_VALUE; i<=maxValue; i++) {
        primesData[i] = PRIME_UNKNOWN;
    }
    for (i=MIN_VALUE; i<=maxValue; i++) {
        if (primesData[i] == PRIME_UNKNOWN) {
            primesData[i] = PRIME_YES;
            results[result_count++] = i;
            int j;
            for (j=i; j<=maxValue; j = j + i) {
                primesData[j] = PRIME_NO;
            }
        }
    }

    int[] retval = new int[result_count];
    for (i=0; i<result_count; i++) {
        retval[i] = results[i];


    }

    tvresult.setText(retval.toString());
    return retval;



}

}

1 个答案:

答案 0 :(得分:0)

算法是正确的。可能你用错误的值作为输入启动它。

确保将MIN_VALUE设置为值2并使用retval预填充1,即:

int[] retval = new int[result_count+1];
retval[0] = 1;
for (i=0; i<result_count; i++) {
    retval[i+1] = results[i];

关于打印问题:

tvresult.setText(Arrays.toString(retval));

因为retval.toString()只返回对象引用而不返回内容。对于任何Java数组都是如此。而是使用Arrays.toString()