簡體   English   中英

使用ArrayList打印素數

[英]Printing prime numbers with ArrayList

誰能告訴我下面的代碼怎么了? 我想打印所有小於41的質數,但也打印非質數15、21。

import java.util.*;
import java.lang.*;
import java.io.*;
class Ideone
{
    public static void main (String[] args) throws java.lang.Exception
    {
        int x = 41;
        List<Integer> lista = new ArrayList<Integer>();

        for (int i = 1; i<=x; i++){

            lista.add(i);
        }
        System.out.println(lista);



        for (int i = 0; i<lista.size()-1; i++){
        if (!isPrime(lista.get(i))){
            lista.remove(lista.get(i));
            }
        }
        System.out.println(lista);
    }

    public static boolean isPrime(int x){
        boolean itIs = true;
        for (int i = 2; i < x; i++){
            if(x%i == 0){
                itIs = false;  
            }
        }
        return itIs;
    }
}

從ArrayList中刪除元素時,將更改其余ArrayList的索引,因此循環將跳過一些數字。

一種可能的解決方法是從List中刪除一個元素后減少循環的計數器:

                for (int i = 0; i<lista.size()-1; i++){
                    if (!isPrime(lista.get(i))){
                        lista.remove(lista.get(i));
                        i--;
                    }
                }

更好的解決方案是將找到的素數添加到新列表中,同時保持原始列表不變。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM