質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

ただいまの
回答率

88.92%

5つごとに表示を自動改行するC言語プログラム

解決済

回答 2

投稿

  • 評価
  • クリップ 0
  • VIEW 228

KeiD

score 26

5つごとに表示を改行するC言語プログラム

以下のプログラムを実行すると
(3, 5)                                                                              
(5, 7)                                                                              
(11, 13)                                                                            
(17, 19)                                                                            
(29, 31)                                                                            
(41, 43)                                                                            
(59, 61)                                                                            
(71, 73)                                                                            
(101, 103)                                                                          
(107, 109)

と出力されますが、
( 3,   5)     ( 5,   7)  ( 11, 13)   ( 17,  19)    (  29,     31)                                                                            
(41,  43)     ( 59, 61)  ( 71, 73)   (101, 103)    ( 107,    109)
....
【上の表示も上下そろうように】

のように5つごとに自動で改行するにはどのほうなコードに変更すればよいでしょうか。
ご存じの方ご教示お願い致します。

include <stdio.h>

int main(void) {
int i, chk;
int n;
int p1 = 2, p2;

for (p2 = 3; p2 <= 120; p2 += 2) {
chk = 0;
for (i = 3; i * i <= p2; i += 2) {
if (p2 % i == 0) {
chk = 1;
break;
}
}

if (chk == 0) {
if (p2 - p1 == 2) {
printf("(%d, %d)\n", p1, p2);
}
p1 = p2;
}
}

return 0;
}

  • 気になる質問をクリップする

    クリップした質問は、後からいつでもマイページで確認できます。

    またクリップした質問に回答があった際、通知やメールを受け取ることができます。

    クリップを取り消します

  • 良い質問の評価を上げる

    以下のような質問は評価を上げましょう

    • 質問内容が明確
    • 自分も答えを知りたい
    • 質問者以外のユーザにも役立つ

    評価が高い質問は、TOPページの「注目」タブのフィードに表示されやすくなります。

    質問の評価を上げたことを取り消します

  • 評価を下げられる数の上限に達しました

    評価を下げることができません

    • 1日5回まで評価を下げられます
    • 1日に1ユーザに対して2回まで評価を下げられます

    質問の評価を下げる

    teratailでは下記のような質問を「具体的に困っていることがない質問」、「サイトポリシーに違反する質問」と定義し、推奨していません。

    • プログラミングに関係のない質問
    • やってほしいことだけを記載した丸投げの質問
    • 問題・課題が含まれていない質問
    • 意図的に内容が抹消された質問
    • 過去に投稿した質問と同じ内容の質問
    • 広告と受け取られるような投稿

    評価が下がると、TOPページの「アクティブ」「注目」タブのフィードに表示されにくくなります。

    質問の評価を下げたことを取り消します

    この機能は開放されていません

    評価を下げる条件を満たしてません

    評価を下げる理由を選択してください

    詳細な説明はこちら

    上記に当てはまらず、質問内容が明確になっていない質問には「情報の追加・修正依頼」機能からコメントをしてください。

    質問の評価を下げる機能の利用条件

    この機能を利用するためには、以下の事項を行う必要があります。

質問への追記・修正、ベストアンサー選択の依頼

  • YufanLou

    2020/07/17 14:40

    コードの前後は下記のように包んでください、読みやすくなります。

    ```cpp
    // コード
    #include <stdio.h>
    ...
    ```

    キャンセル

  • 退会済みユーザー

    2020/07/17 15:11

    複数のユーザーから「やってほしいことだけを記載した丸投げの質問」という意見がありました
    「質問を編集する」ボタンから編集を行い、調査したこと・試したことを記入していただくと、回答が得られやすくなります。

回答 2

checkベストアンサー

+1

#include <stdio.h>

int main(void) {
  int n = 0;
  int p1 = 2;

  for (int p2 = 3; p2 <= 120; p2 += 2) {
    int chk = 0;
    for (int i = 3; i * i <= p2; i += 2) {
      if (p2 % i == 0) {
        chk = 1;
        break;
      }
    }

    if (chk == 0) {
      if (p2 - p1 == 2) {
        printf("(%3d, %3d)", p1, p2);
        putchar(++n % 5 ? ' ' : '\n');
      }
      p1 = p2;
    }
  }

  return 0;
}

投稿

  • 回答の評価を上げる

    以下のような回答は評価を上げましょう

    • 正しい回答
    • わかりやすい回答
    • ためになる回答

    評価が高い回答ほどページの上位に表示されます。

  • 回答の評価を下げる

    下記のような回答は推奨されていません。

    • 間違っている回答
    • 質問の回答になっていない投稿
    • スパムや攻撃的な表現を用いた投稿

    評価を下げる際はその理由を明確に伝え、適切な回答に修正してもらいましょう。

  • 2020/07/17 15:05

    ありがとうございます!

    putchar(++n % 5 ? ' ' : '\n');
    の?は?なでしょうか?文字化けでしょうか?
    また、p2<1000では表示がそろいますが p2>1000こえると表示が以下のようにずれてしまいますがどうすれば直せますか?
    ( 3, 5) ( 5, 7) ( 11, 13) ( 17, 19) ( 29, 31)
    ( 41, 43) ( 59, 61) ( 71, 73) (101, 103) (107, 109)
    (137, 139) (149, 151) (179, 181) (191, 193) (197, 199)
    (227, 229) (239, 241) (269, 271) (281, 283) (311, 313)
    (347, 349) (419, 421) (431, 433) (461, 463) (521, 523)
    (569, 571) (599, 601) (617, 619) (641, 643) (659, 661)
    (809, 811) (821, 823) (827, 829) (857, 859) (881, 883)
    (1019, 1021) (1031, 1033) (1049, 1051) (1061, 1063) (1091, 1093)

    キャンセル

  • 2020/07/17 15:12

    いや、元のプログラムではp2が120までですよね。「p2の最大値を変更して、1000を超える値を設定する」というのは、あなたしか知らないことです。自分で直してください。printfの中で「%3d」となっているところ2カ所です。「3」は表示に使う桁数の最小値を示しています。

    ?は「条件 ? 値1 : 値2」というC言語の三項演算子ですが、あなたには早すぎたようなので、以下のコードに置き換えてください。

    if (++n % 5 != 0) {
    putchar(' ');
    } else {
    putchar('\n');
    }

    これと同じ事をしています。

    キャンセル

  • 2020/07/17 15:14

    ありがとうございます。
    初心者ですいません。

    キャンセル

0

5つごとに自動で改行する

int n=0;

for(ループ){
    ~~~
    printf(改行しない出力);
    if(++n % 5 == 0) printf("\n");
    ~~~
}

上の表示も上下そろうように

%dでなく%3dのように桁数を指定します。

投稿

  • 回答の評価を上げる

    以下のような回答は評価を上げましょう

    • 正しい回答
    • わかりやすい回答
    • ためになる回答

    評価が高い回答ほどページの上位に表示されます。

  • 回答の評価を下げる

    下記のような回答は推奨されていません。

    • 間違っている回答
    • 質問の回答になっていない投稿
    • スパムや攻撃的な表現を用いた投稿

    評価を下げる際はその理由を明確に伝え、適切な回答に修正してもらいましょう。

15分調べてもわからないことは、teratailで質問しよう!

  • ただいまの回答率 88.92%
  • 質問をまとめることで、思考を整理して素早く解決
  • テンプレート機能で、簡単に質問をまとめられる

関連した質問

同じタグがついた質問を見る