[英]Prime numbers recursion
我需要迭代並打印素數。 這段代碼可以正常工作,但是如果數字不是素數,則輸出-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<a;i++) {
if(a%i==0)
return -1;
}
if(a==0||a==1) return -1;
return a;
}
在主要方面,我需要以這種方式打印它,這就是為什么我需要返回素數的int方法
while(hasNext()){
System.out.println(next(position));
}
調用自身的方法被稱為遞歸。
這是以遞歸方式獲取素數的代碼
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;
}
}
假設您的問題是僅打印質數,
//您需要從函數中返回一個值。 在這種情況下,請在調用者函數中處理-1情況,即if(next(a)!=-1)
=> print a是質數。
//您只想打印質數並可以修改函數
if(isPrime(a)==true)
=>打印一個素數
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.