问题是打印到n的素数序列,但如果任何素数包含数字7,则将其替换为S。例如,如果n=7,级数将是2 3 5 s 11 13 s我该怎么做呢?
这不是最佳方式,但应该可以工作。测试是否质数的函数:
private boolean isPrime(int n)
{
for(int i = 2; i < n; i++)
{
if(n % i == 0)
return false;
}
return true;
}
和执行主循环的代码:
for (int i = 2; i <= number; i++)
{
if(isPrime(i))
{
if(Integer.valueOf(i).toString().contains("7")) {
System.out.print("S ");
} else {
System.out.print(i + " ");
}
}
}
下面是如何查找和打印素数的示例。之后,你所要做的就是检查每个数字是否有数字7,并替换。
在网站上给出的代码中,这可以使用一个简单的字符串包含方法来完成。
if (counter == 2)
{
if (Integer.toString(i).contains("7"){
primeNumbers = primeNumbers + "S" + " ";
}
else {
//Appended the Prime number to the String
primeNumbers = primeNumbers + i + " ";
}
}
如果您的系列包含在int数组中,则将其转换为String
:
int[] arPrimes = {2,3,5,7,11,13,17, ... }; //generate your prime numbers series
String strPrimes = Arrays.toString(array);
那么,你应该有这样的序列:
strPrimes = "2, 3, 5, 7, 11, ... ";
你只需要将包含"7"
的子字符串替换为"S"
;
String strPrimes7S = strPrime.replaceAll(",([0-9]*7+[0-9]*)", ",S");