-1

私はこれに2日間取り組んできましたが、まったく運がありませんでした。ユーザーが指定した範囲を出力し、範囲内のすべての素数を表示するプログラムが必要です。すべての非素数は「-」として出力する必要があります。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

問題をより小さなサブ問題に分解することをお勧めします。たとえば、プライマー番号のリストを出力し、形式を気にしたり、1 行あたり 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

1 つのオプションは、カウンターを作成することです。counter%10==0 の場合、新しい行を出力します。

于 2013-04-14T00:13:03.923 に答える
-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 に答える