Java 素数识别与平方

Java 素数识别与平方,java,primes,Java,Primes,我被要求为以下问题编写代码 在给定的数字数组中找到素数并打印总和 找到的质数的平方 这是我的密码: import java.util.*; public class primenumber2 { public static void main(String[] args) { int[] int1 = {2,3,4,6,11,13,17,99}; int square=0; int result=0; bo

我被要求为以下问题编写代码

在给定的数字数组中找到素数并打印总和 找到的质数的平方

这是我的密码:

import java.util.*;

public class primenumber2
{
    public static void main(String[] args) 
    {
        int[] int1  = {2,3,4,6,11,13,17,99};

        int square=0;
        int result=0;

        boolean isprime = true;

        for(int i=0;i<int1.length;i++)
        {   
            int temp=int1[i];
            for(int j=1;j<i;j++)
            {

                if(temp%j==0)
                {
                    isprime = false;

                }
                else
                    isprime = true;


            }
            if(isprime)
                {   
                    System.out.println(temp);
                    square = temp*temp;
                    result = result+square; 
                }



        }

        System.out.println(result);
    }
}
import java.util.*;
公共类素数2
{
公共静态void main(字符串[]args)
{
int[]int1={2,3,4,6,11,13,17,99};
整数平方=0;
int结果=0;
布尔值isprime=true;
对于(int i=0;i2个问题

  • 1

  • 您的检查直到
    j您可能不想在
    for j
    循环中将
    isprime
    设置为true。您所说的是“如果
    j
    不是
    temp
    的一个因子,那么
    temp
    就是prime”.这是错误的逻辑。如果你检查的数字没有一个是因子,而不是你检查的最后一个数字不是因子,那就是素数。在
    toCheck/2
    之前进行检查难道还不够吗?@Fildor它实际上是
    toCheck
    的平方根,向下舍入。这个答案怎么值得向下投票?复仇向下投票…得到了吗ta喜欢它。真的很成熟。对一个拥有16k+代表的家伙这样做……是的……有时会发生,但我不在乎,我只是想让Zia纠正错误,给OP一个丑陋但正确的解决方案。。。。
    for(int j=1;j<i;j++)
    //           ↑ why limit this loop at index of the outer loop? 
    //        ↑ start at 1 (WRONG!)
    
    for(int j=2;j<temp;j++)
    
    private static boolean isPrime(int toCheck) {
        for (int i = 2; i < toCheck; i++) {
            // stop iterating if you know number is even
            if (toCheck % i == 0) return false;
        }
        return true;
    }
    
    public static void main(String[] args) throws Exception {
        int[] int1 = { 2, 3, 4, 6, 11, 13, 17, 99 };
    
        int square = 0;
        int result = 0;
    
        for (int i = 0; i < int1.length; i++) {
            if (isPrime(int1[i])) {
                System.out.println(int1[i]);
                square = int1[i] * int1[i];
                result += square;
            }
    
        }
    
        System.out.println(result);
    }
    
    2
    3
    11
    13
    17
    592