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

时间:2013-04-14 00:09:01

标签: java

我一直在努力工作两天,绝对没有运气。我需要我的程序打印用户给出的范围并显示范围内的所有素数。所有非素数应打印为“ - ”。我需要每行10个数字,然后是|以及该行中的最后一个数字。它看起来像这样:

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;
        }
    }

5 个答案:

答案 0 :(得分:0)

一个选项是制作一个计数器,当计数器%10 == 0时,你打印一个新行。

答案 1 :(得分:0)

我建议你把问题分解成更小的子问题。例如,打印出一个引号的列表,不用担心格式或打印出给定范围内的数字,每行10个数字。在你弄清楚如何分别做这些之后,然后尝试将它们组合起来。

答案 2 :(得分:0)

在我提出问题后不久就知道了,这是我使用的代码:

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();
        }

答案 3 :(得分:0)

在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)

答案 4 :(得分:-1)

编译:gcc prime.c 运行(范围1-200):。/ a.out 1 200

#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;
}