Java 打印范围内的所有数字仅显示素数

Java 打印范围内的所有数字仅显示素数,java,Java,我已经在这方面工作了两天,完全没有运气。我需要我的程序打印用户给定的范围,并显示该范围内的所有素数。所有非素数都应打印为“-”。我需要每行有10个数字,后跟a,以及行中的最后一个数字。它看起来像这样: 71-73----79---80 我知道我需要使用printf,但在开始新行之前,我不知道在哪里放置print语句,或者如何阻止printf语句在10个数字处停止。我也不知道如何在仍然使用printf的情况下将非素数打印为“-”。我每次尝试都会出错。以下是用户输入号码后的代码: for(d=sta

我已经在这方面工作了两天,完全没有运气。我需要我的程序打印用户给定的范围,并显示该范围内的所有素数。所有非素数都应打印为“-”。我需要每行有10个数字,后跟a,以及行中的最后一个数字。它看起来像这样:

71-73----79---80

我知道我需要使用printf,但在开始新行之前,我不知道在哪里放置print语句,或者如何阻止printf语句在10个数字处停止。我也不知道如何在仍然使用printf的情况下将非素数打印为“-”。我每次尝试都会出错。以下是用户输入号码后的代码:

for(d=start;d<end;d++) { 
        b=0; 
        for(c=1;c<=d;c++){ 
            if(d%c==0) 
                b=b+1;
        } 
        if(b==2){ 
            System.out.printf("%4d", d); 
            //prints prime numbers with the spacing required
            primes=primes+1;
        }
    }

用于(d=start;d一个选项是制作一个计数器,当计数器%10==0时,您将打印一行新行。

我建议您将问题分解为更小的子问题。例如,打印一个初级编号列表,不必担心格式或打印给定范围内的编号,每行10个编号。在您弄清楚如何执行eac之后将它们分开,然后尝试组合起来。

编译:gcc prime.c 运行(范围为1-200):/a.输出1200

#include<stdio.h>
#include<math.h>
int isPrime(int n){
    if(n==1) return 0;
    int i=2;
    while(i<=sqrt(n))
        if(n%i++==0)
            return 0;
    return 1;
}
int main(int argc, char *argv[]){
    int a,b,count;
    if(argc<3)
        return 0;
    a=atoi(argv[1]);
    b=atoi(argv[2]);
    count=1;
    for(;a<=b;a++){
        if(isPrime(a)) printf("%d ",a);
        else printf("- ");
        if(count++==10){
            printf("| %d\n",a);
            count=1;
        }
    }
    return 0;
}
#包括
#包括
intisprime(intn){
如果(n==1)返回0;
int i=2;

虽然(我在问了这个问题后很快就明白了,但下面是我使用的代码:

for(d=start;d<=end;d++) { 
        b=0; 
        for(c=1;c<=d;c++){ 
            if(d%c==0) 
                b=b+1;
        } 
        if(b==2){ 
            primes=primes+1;
            if(d!=start){
                System.out.printf("%4d", d);
            }
        }else{
            if(d!=start){
                System.out.printf("   -");
            }
        }
        if(d%10==0&&d!=start){
            System.out.printf(" | ");
            System.out.printf("%4d", d);
            System.out.println();
        }

<代码>(d=开始;d< p>)在Python中尝试它给你一个启动点,考虑下面的代码,

def prime_display(n):
    for i in range(1, n+1):
        if is_prime(i) == True:
            print(i, end=' ')
        else:
            if divisible_by_10(i):
                print(f'- | {i}', end='\n')

            print('-', end=' ')

def divisible_by_10(n):
    if (n % 10) == 0:
        return True
    return False

def is_prime(n):
    if n > 1:
        for i in range(2, n):
            if (n % i) == 0:
                return False
        else:
                return True
    else:
        return False

prime_display(39)

这到底是什么?