在Java中,求質數平方和是一個常見的問題。以下是一個簡單的實現方法:
public static int primeSum(int n) { int sum = 0; for (int i = 2; i<= n; i++) { boolean isPrime = true; for (int j = 2; j<= Math.sqrt(i); j++) { if (i % j == 0) { isPrime = false; break; } } if (isPrime) { sum += i * i; } } return sum; }
該方法接收一個整數n,返回小于等于n的所有質數的平方和。它使用了兩重循環,第一重循環從2開始遍歷到n,第二重循環用于判斷該數是否為質數。如果是質數,則將其平方加到sum中。
在第二重循環中,用i除以從2到i的平方根的所有整數,如果有一個整除i,則說明i不是質數。
下面是一個調用示例:
int sum = primeSum(10); // 返回 2^2 + 3^2 + 5^2 + 7^2 = 87 System.out.println(sum);
該方法的時間復雜度為O(n^1.5)。如果要優化,可以考慮使用篩法求質數,可以將時間復雜度降到O(nloglogn)。
上一篇css中偽類6