-1

我已经为此工作了两天,完全没有运气。我需要我的程序打印用户给定的范围并显示该范围内的所有素数。所有非质数都应打印为“-”。我需要每行有 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;
        }
    }
4

5 回答 5

0

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

于 2013-04-14T00:13:03.923 回答
0

我建议您将问题分解为较小的子问题。例如,打印出引物编号列表,无需担心格式或打印出给定范围内的数字,每行 10 个数字。在你弄清楚如何分别做这些之后,然后尝试将它们结合起来。

于 2013-04-14T00:17:46.290 回答
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();
        }
于 2013-04-26T20:16:32.353 回答
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)
于 2018-10-02T10:35:38.873 回答
-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;
}
于 2013-04-14T00:44:31.227 回答