素数识别和平方
Prime number identification and squaring
我被要求为以下问题编写代码,
Find the prime numbers in an array of given numbers and print the sum
of squares of the prime numbers found.
这是我的代码:
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);
}
}
现在的问题是每个以 9 结尾的数字都被添加为质数,我找不到原因。
有人可以帮我解决这个问题吗?还有,如果,可能是一种更好的方法来解决这个问题,只需使用基本功能和 类.
2 个问题
- 你从
1
开始 for-loop
- 你检查直到
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
这似乎是正确的
我被要求为以下问题编写代码,
Find the prime numbers in an array of given numbers and print the sum of squares of the prime numbers found.
这是我的代码:
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);
}
}
现在的问题是每个以 9 结尾的数字都被添加为质数,我找不到原因。
有人可以帮我解决这个问题吗?还有,如果,可能是一种更好的方法来解决这个问题,只需使用基本功能和 类.
2 个问题
- 你从
1
开始for-loop
- 你检查直到
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
这似乎是正确的