我使用以下代码获取素数:
public static void printPrimeNumbers(int numberOfPrimes){
final int NUMBER_OF_PRIMES_PER_LINE = 10;
int count = 0;
int number = 2;
while (count < numberOfPrimes){
//print the prime numbers and increase count
if (isPrime(number)){
count++;
if (count % NUMBER_OF_PRIMES_PER_LINE == 0){
System.out.printf("%-5s\n", number);
}else {
System.out.printf("%-5s", number);
}
}
number++;
}
}
private static boolean isPrime(int number) {
for (int divisor = 2; divisor <= number / 2 ; divisor++) {
if (number % divisor == 0){ // if true number is not prime
return false;
}
}
return true;
}
它运行良好,我需要得到最后一列素数的总和,假设我插入printPrimeNumbers(50)
将有5行,列中有5个数字我想得到最后一列的总和,如何实现呢?
答案 0 :(得分:0)
您需要做的是包含一个新变量来保存总和的值。使用该变量,您需要在每列的末尾添加数字的值。确定转到新行的位置将显示何时添加到新的sum变量。我写过你需要添加变量/值的地方,但是将这些值分配给?,你需要用实际代码替换它们才能使它工作。
public static void printPrimeNumbers(int numberOfPrimes){
final int NUMBER_OF_PRIMES_PER_LINE = 10;
int count = 0;
int number = 2;
int sum = ?;
while (count < numberOfPrimes){
//print the prime numbers and increase count
if (isPrime(number)){
count++;
if (count % NUMBER_OF_PRIMES_PER_LINE == 0){
System.out.printf("%-5s\n", number);
sum += ?;
}else {
System.out.printf("%-5s", number);
}
}
number++;
}
}
private static boolean isPrime(int number) {
for (int divisor = 2; divisor <= number / 2 ; divisor++) {
if (number % divisor == 0){ // if true number is not prime
return false;
}
}
return true;
}
答案 1 :(得分:0)
您可以编辑
printPrimeNumbers()
方法:
public static void printPrimeNumbers(int numberOfPrimes){
final int NUMBER_OF_PRIMES_PER_LINE = 10;
int count = 0;
int number = 2;
**List<int> lastColumnPrimes = new ArrayList();**
while (count < numberOfPrimes){
//print the prime numbers and increase count
if (isPrime(number)){
count++;
if (count % NUMBER_OF_PRIMES_PER_LINE == 0){
System.out.printf("%-5s\n", number);
l**astColumnPrimes.add(number);**
}else {
System.out.printf("%-5s", number);
}
}
number++;
}
**int lastColumnSum = 0;
for ( int n : lastColumnPrimes ) {
lastColumnSum += n;
}
System.out.printf("Sum of numbers in last column is " + lastColumnSum);**
}
注意双星号(**)添加的行。很少需要添加,只需要一个列表来跟踪最后一列中的数字,一个循环来获取总和,最后一个print语句来报告总和。中提琴!
如果您不需要跟踪最后一列中的数字,只想要总和,那么您可以省略列表并循环,只需使用int来计算值而不是列表。
答案 2 :(得分:0)
创建一个新变量并将其初始化为0.然后您可以在if语句中添加它以检查新行。然后在最后打印出总数。
int total = 0;
while (count < numberOfPrimes){
//print the prime numbers and increase count
if (isPrime(number)){
count++;
if (count % NUMBER_OF_PRIMES_PER_LINE == 0){
System.out.printf("%-5s\n", number);
total += number;
}else {
System.out.printf("%-5s", number);
}
}
number++;
}
System.out.println("Total:" + total);