素数识别和平方

时间:2016-10-27 10:47:40

标签: java primes

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

  

在给定数字的数组中查找素数并打印总和   找到了素数的正方形。

这是我的代码:

W = tf.Variable(tf.random_uniform([vocab_size, embedding_size], -1.0, 1.0), name="W")

现在的问题是每个以9结尾的数字都会被添加为素数,我找不到原因。

有人可以帮我吗?还有,如果可能是一种更好的方法来解决这个问题,只需使用基本的功能和类。

1 个答案:

答案 0 :(得分:2)

2个问题

  • 您从for-loop
  • 开始1
  • 您的支票直到j<i,这是第一个循环的索引。

for(int j=1;j<i;j++)
//           ↑ why limit this loop at index of the outer loop? 
//        ↑ start at 1 (WRONG!)

要检查素数,您必须从number % 2开始,直到number % number - 1

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

这似乎是正确的