Java 素数递归
我需要迭代和打印素数。这段代码工作正常,但如果数字不是素数,它会打印-1。有没有办法删除-1Java 素数递归,java,recursion,iterator,Java,Recursion,Iterator,我需要迭代和打印素数。这段代码工作正常,但如果数字不是素数,它会打印-1。有没有办法删除-1 public boolean hasNext() { if (position >= end) { return false; } else { position++; return true; } } @Override public int next(int a) { for(int i=2;i<
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;
}
调用自身的方法称为递归方法 下面是以递归方式获取素数的代码
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);
}
}
公共类素数{
公共静态void main(字符串[]arg){
对于(int i=1;i<10;i++){
int res=isPrime(i,i-1);
如果(res==1){
System.out.println(i+“是素数”);
}
否则{
System.out.println(i+“不是素数”);
}
}
}
静态int-isPrime(int-a,int-div){
假设你的问题是只打印素数和
- //您需要从函数返回一个值。
在这种情况下,在调用者函数中处理-1情况,即
if(next(a)!=-1)
=>打印a为素数
- //您只需要打印素数,就可以修改您的函数
- 将函数重命名为isPrime并返回boolean(对于素数为true,否则为false)
if(isPrime(a)==true)
=>打印a为素数
这里没有递归,你想做什么也不是很清楚:你想返回素数吗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);
}
}
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;
}
}