我被要求为以下问题编写代码,
在给定数字的数组中查找素数并打印总和 找到了素数的正方形。
这是我的代码:
W = tf.Variable(tf.random_uniform([vocab_size, embedding_size], -1.0, 1.0), name="W")
现在的问题是每个以9结尾的数字都会被添加为素数,我找不到原因。
有人可以帮我吗?还有,如果可能是一种更好的方法来解决这个问题,只需使用基本的功能和类。
答案 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
这似乎是正确的