【问题标题】:Count of unique prime number唯一素数的计数
【发布时间】:2022-10-23 16:33:06
【问题描述】:

我试图计算唯一的素数,我能够打印唯一的素数但无法计数,我也不打算使用额外的数组? 找到素数后我的逻辑出错了!谁能帮我这个 ?

public static void main(String[] args) {
        Scanner sc=new Scanner(System.in);   
        System.out.println("Please enter your array limit");    
        int limit=sc.nextInt();    
        int array[]=new int[limit];    
        System.out.println("please enter your array elements ");    
        for(int i=0;i<limit;i++) {     
            array[i]=sc.nextInt();     
        }     
        int flag=0;   
        for(int i=0;i<limit;i++) {     
            int counter=0;      
            for (int j=1;j<=array[i];j++) {      
                if(array[i]%j==0) {
                    counter++;
                }
            }
            if(counter==2) {
                System.out.println(array[i]);
                for(int k=i;k<limit;k++) {
                if(array[i]!=array[k]) {
                    flag++;
                }
                }
                }
        }
System.out.println("Count of unique prime number: "+flag);
sc.close();
}
}

output:
Please enter your array limit
6
please enter your array elements 
1 2 3 4 5 6
2
3
5
Count of unique prime number: 8
//expected output 3

【问题讨论】:

    标签: java arrays


    【解决方案1】:

    更新:如果您只需要唯一值,您可能希望将它们插入到 Set 中,最后返回 Set 的大小,如下所示:

    int flag = 0;
    Set<Integer> primeNumbers = new HashSet<>();
    for (int i = 0; i < limit; i++) {
      int counter = 0;
      for (int j = 1; j <= array[i]; j++) {
        if (array[i] % j == 0) {
          counter++;
        }
      }
      if (counter == 2) {
        primeNumbers.add(array[i]);
        System.out.println(array[i]);
      }
    }
    

    最后只返回primeNumbers.size()。这是因为 Set 数据结构不允许重复值。

    遇到素数(即计数器 == 2)后,无需进行第二次循环。只需在 if 条件之后更改代码:

    if (counter == 2) {
      System.out.println(array[i]);
      flag++;
    }
    

    最后只需打印/返回标志。快乐编码! =)

    【讨论】:

    • 谢谢你,我真的很感激帮助。我已经尝试了上述步骤,但如果在数组中有重复素数,那么标志也会计算,我只需要唯一的素数计数。是的,如果数组中没有任何重复元素,您的建议将有效。谢谢
    • 我刚刚更新了答案!
    猜你喜欢
    • 2015-04-18
    • 1970-01-01
    • 1970-01-01
    • 2012-04-28
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-03-07
    • 2018-03-16
    相关资源
    最近更新 更多