我需要迭代并打印素数。此代码工作正常,但如果数字不是素数,则打印-1。有没有办法删除-1s?
public boolean hasNext() {
if (position >= end) {
return false;
} else {
position++;
return true;
}
}
@Override
public int next(int a) {
for(int i=2;i<a;i++) {
if(a%i==0)
return -1;
}
if(a==0||a==1) return -1;
return a;
}
在main中我需要以这种方式打印它,这就是为什么我需要返回素数的int方法
while(hasNext()){
System.out.println(next(position));
}
答案 0 :(得分:0)
调用自身的方法被认为是递归的。
以下是以递归方式获取Prime数字的代码
public class Prime {
public static void main(String[] arg) {
for(int i = 1; i < 10; i++) {
int res = isPrime(i, i -1);
if(res == 1){
System.out.println(i +" is a prime number");
}
else{
System.out.println(i +" not a prime number");
}
}
}
static int isPrime(int a, int div) {
if(div <= 1) {
return 1;
}
if(a % div == 0) {
return -1;
}
return isPrime(a, div-1);
}
}
修改强>
Prime Number的递归代码。
如果是素数则返回数字
public class Prime
{
public static void main(String[] args)
{
for(int i = 1; i <= 10; i++)
{
if (isPrimeNumber(i) == 1)
{
System.out.println(i+ " is a prime Number");
}
}
}
public static int isPrimeNumber(int i) {
int factors = 0;
int j = 1;
while(j <= i)
{
if(i % j == 0)
{
factors++;
}
j++;
}
int flag = 0;
if(factors == 2){
flag = 1;
}
return flag;
}
}
答案 1 :(得分:0)
假设您的问题是仅打印素数和
//您需要从函数返回一个值。
在这种情况下,处理调用函数中的-1情况,即
if(next(a)!=-1)
=&gt;打印a是素数。
//您只想打印素数并修改您的功能
if(isPrime(a)==true)
=&gt;打印a是素数。