我的Java一线素函数有什么问题?

问题描述 投票:-1回答:1

我想创建一个Java程序,输出所有小于用户选择的给定数字n的质数。我遇到的问题是我需要返回一个数字并再次调用该函数。有办法吗?

每当k == 1时,我们就会找到素数。现在,我要做的是返回该数字(因此,当n时为k == 1的值),并通过再次调用该函数继续寻找较小的素数。

我需要类似的东西:

...condition ? do smth : return n && Primes(smth)...

请告诉我我是否还不够清楚。谢谢

这是我的代码,虽然不完整:

 import java.*;
    import java.util.Scanner;

public class Main {

    public static int Primes(int n, int k) {
        return ((k == 0) ? n : (k == 1 && n == 1) 
                         ? n : (k == 1 && n > 1) 
                         ? Primes(n-1, n-2) : (n % k) != 0 
                         ? Primes(n, k-1) : Primes(n-1, n-2));
    }


    public static void main(String[] args) {
        // TODO Auto-generated method stub

        Scanner s = new Scanner(System.in);
        int num = s.nextInt();
        System.out.println("The primes are: " + Primes(num, (num-1)));
        //System.out.print(8/0);
        System.out.println(num + " " + (num-1));
    }

}
java primes ternary-operator
1个回答
0
投票

我找到了解决挑战的方法。看看您是否有兴趣,尽管我知道代码不是很干净:

import java.*;
import java.util.Scanner;

public class Main {

    public static int Primes(int n, int k) {
        //System.out.println("The values for n and k are: " + n + " and " + k);
        return ((k < 2 && n < 2) ? PrintPrimes(n) : (k == 1 && n > 1) ? PrintPrimes(n) : (n % k) != 0 ? Primes(n, k-1) : Primes(n-1, n-2));
    }

    public static int PrintPrimes(int n) {
        System.out.println(n);
        return ((n == 1) ? n : Primes(n-2, n-3));
    }

    public static void main(String[] args) {
        // TODO Auto-generated method stub

        Scanner s = new Scanner(System.in);
        int num = s.nextInt();
        Primes(num, (num-1));
    }

}

而且效果很好

© www.soinside.com 2019 - 2024. All rights reserved.