アプリ版:「スタンプのみでお礼する」機能のリリースについて

すみません。なぜ素数Pの次の素数(P+ 2)∧2 ー 1で、P+ 2=Qとして、Q∧ 2ー 1で、なぜ、− 1するのでしょうか?ご教授下さい。すみませんが。なぜ、(P+ 2)∧ 2ー 1はどうやって出てくるのでしょうか?ご教授下さい。すみません。

「エラトステネスの篩について。」の質問画像

質問者からの補足コメント

  • うーん・・・

    なぜ、P∧2 =289以下となっているのでしょうか?ご教授下さい。すみませんが。

    No.1の回答に寄せられた補足コメントです。 補足日時:2021/01/24 16:15
  • うーん・・・

    なぜ、(29行目)を指したのでしょうか?ご教授下さい。すみませんが。わざわざ29行目を指した理由は、なんでしょうか?s=5と関係しているということでしょうか?ご教授下さい。すみませんが。

    No.11の回答に寄せられた補足コメントです。 補足日時:2021/01/27 09:27
  • うーん・・・

    メインルーチンとサブルーチンの例をご教示願います。すみませんが。

    No.13の回答に寄せられた補足コメントです。 補足日時:2021/01/27 18:28
  • うーん・・・

    具体例をお願いしたいです。ご教授下さい。すみませんが。

    No.12の回答に寄せられた補足コメントです。 補足日時:2021/01/27 19:10

A 回答 (16件中1~10件)

メインルーチンの例


main()
{
int a,b,c
a=2;
b=3;
c=add(a,b);
printf("%d\n",c};
}
の意味は
2+3の答え5を表示するという意味です

サブルーチン(関数) の 例
int add(int a,int b)
{
int c;
c=a+b;
return c;
}
の意味は
入力されたa,bに対して
a+bの答cを出力するという意味です

この処理は
main()
{
int a,b,c
a=2;
b=3;
c=a+b;
printf("%d\n",c};
}

add(a,b)→a+b
すればよいので
わざわざ(a+b)を
サブルーチン
add(a,b)にするは必要ありません

#14で、メインルーチンしかないのは
サブルーチンを使う必要がないからです

サブルーチン
の中で
複雑な処理を行っている場合
そのサブルーチンを
何回も呼び出す場合に
サブルーチンを使う必要がある
のです

なお
数学に関係無い質問はおやめ下さい
    • good
    • 0

メインルーチンの例



main()
{
int a,b,c

a=2;
b=3;

c=add(a,b);

printf("%d\n",c};
}

サブルーチン(関数) の 例

int add(int a,int b)
{
int c;

c=a+b;

return c;
}
    • good
    • 0
この回答へのお礼

それぞれどういう意味でしょうか?なぜ、前の回答で、#14で、メインルーチンしかないのでしょうか?ご教授下さい。すみませんが。

お礼日時:2021/01/28 07:13

Link:

http://codepad.org/Oxfd5gz9
最初の行には
#include <stdio.h>
しかありません

s を表示するよう付け加えて実行してみました(29行目)。

等とどこにも書かれていません

本来そのプログラムは
5~283までの素数を出力するのが目的なので
Oxfd5gz9 の 29行目は

printf( "%d (s=%d)\n", n, s );

素数nの他に よけいな(s)を出力しているから間違いなのです

間違ったプログラムは間違いなのです
間違った事は教えられません

プログラムが正しく動いているかどうか
プログラムにバグ(欠陥)があるかどうか
調べるために
s を表示するよう付け加えて実行してみて
正しく
動いているかどうか確認できたら

s を表示する処理は外すべきなのです

C言語のプログラムの

メインルーチンの例

Link: http://codepad.org/Oxfd5gz9

5行目の
int main(void){
から
最終行まですべてメインルーチンです

サブルーチンは無いけれども

システムサブルーチン関数を呼び出している所は
29行目の

printf( "%d (s=%d)\n", n, s );


printf

C言語コンパイラーが用意しているシステム関数です
    • good
    • 0
この回答へのお礼

メインルーチンとサブルーチンの具体例をご教授願いたいのですが。ご教授下さい。すみませんが。

お礼日時:2021/01/27 20:45

C言語のプログラムは


メインルーチンもサブルーチンも全て関数となっているのです
そして
C言語のプログラムの処理の開始は
main()関数というメインルーチンから始まるのです


s を表示するよう付け加えて実行してみました(29行目)。

等とどこに書かれているのでしょうか?

本来そのプログラムは
5~283までの素数を出力するのが目的なので
Oxfd5gz9 の 29行目は

printf( "%d (s=%d)\n", n, s );

素数nの他に よけいな(s)を出力しているから間違いなのです

プログラムが正しく動いているかどうか
プログラムにバグ(欠陥)があるかどうか
調べるために
s を表示するよう付け加えて実行してみて
正しく
動いているかどうか確認できたら

s を表示する処理は外すべきなのです
この回答への補足あり
    • good
    • 0
この回答へのお礼

s を表示するよう付け加えて実行してみました(29行目)。

C code - 58 lines - codepad

確かに 5 より大きくはならないようです。

s が L と等しくなった時点で f1 が 1 になり、s に加算する部分が実行されなくなるためでしょう。
で、Link: http://codepad.org/Oxfd5gz9
最初の行に書かれています。ご教授下さい。すみませんが。

お礼日時:2021/01/27 18:06

Oxfd5gz9 の 29行目は



printf( "%d (s=%d)\n", n, s );

素数nの他に よけいな(s)を出力しているから間違いで
間違いだから指したのです

それに対応している
bbs/955 の 31行目は

print n


素数 n だけを出力しているから、あっているのです
この回答への補足あり
    • good
    • 0
この回答へのお礼

main 関数とはどういう意味でしょうか?ご教授下さい。すみませんが。
s を表示するよう付け加えて実行してみました(29行目)。
と書かれているのですが、29行目どういうことでしょうか?ご教授下さい。すみませんが。

お礼日時:2021/01/27 14:06

そのプログラムは



31 print n


素数 n だけを出力しているからあっています
この回答への補足あり
    • good
    • 0
この回答へのお礼

main関数とはなんでしょうか?ご教授下さい。すみませんが。

お礼日時:2021/01/27 06:48


printf( "%d (s=%d)\n", n, s );

は間違いで

printf( "%d", n);


素数 n だけを出力しなければいけません
    • good
    • 0
この回答へのお礼

すみません。以下のURLのプログラムは、合っていますか?ご教授下さい。画像の本の内容と同じかどうかです。
https://6900.teacup.com/cgu135/bbs/955

お礼日時:2021/01/27 06:12

printf( "%d (s=%d)\n", n, s );


とかくと

nがs番目の素数という意味になってしまうから

nがs番目の素数
」が間違いなのです

n は s番目の素数ではありません
    • good
    • 0
この回答へのお礼

では、このプログラムは、間違いということですね?
printf( "%d (s=%d)\n", n, s );
とかくと
これは、どのように直せば良いのでしょうか?ご教授下さい。すみません。

お礼日時:2021/01/26 21:53

289未満でも289以下でもどちらでも同じなのでどちらでもよいですが


そのプログラムを作成した人の好みでそうしたのです

すべてで割り切れず,
とは
n

p(1)=5,p(2)=7,p(3)=11,p(4)=13,p(5)=17
のすべてで割り切れず,
という意味で
nは素数という意味です

if ( n / p[ s ] <= p[ s ] ) { /* 算法3。33行まで。 */

意味は
もし n/p(s)≦p(s) ならば
という意味で
もし n≦{p(s)}^2 ならば
という意味で
もし n≦17^2=289 ならば
という意味で

printf( "%d (s=%d)\n", n, s );

(sは5以下なので) nが19から283までs=5のままです
間違いで n は s番目の素数ではありません

printf( "%d\n", n);

素数 n 出力するという意味です

else{

もし n/p(s)>p(s) ならば
という意味で
もし n>{p(s)}^2 ならば
という意味で
もし n>17^2=289 ならば
という意味で

goto label70

終了するという意味です
    • good
    • 0
この回答へのお礼

printf( "%d (s=%d)\n", n, s );

(sは5以下なので) nが19から283までs=5のままです
間違いで n は s番目の素数ではありません
この間違いでというのは、どういうことでしょうか?ご教授下さい。すみませんが。

お礼日時:2021/01/26 19:38

そのURLの29行目は



3゚
すべてで割り切れず,
if ( n / p[ s ] <= p[ s ] ) { /* 算法3。33行まで。 */
n/p(s)≦p(s)なら n を 出力(素数)
printf( "%d (s=%d)\n", n, s );
}
else {
n/p(s)>p(s)となったらやめる
goto label70; /* C で「終了」は main 関数脱出なので57行に飛ぶ。 */
}
という事なのです

p(1)=5
p(2)=7
p(3)=11
p(4)=13
p(5)=17
だから

n/p(5)=n/17>17
n>p(5)^2=17^2=289となったらやめているのです
だから
そのプログラムでは
P^2=17^2=289以下の素数283までしか表示していません

だけれども

P=17の次の素数Q=19に対して
Q^2-1=360
以下の素数を表示するよう
プログラムを変更してもかまいません
と言っているのです
    • good
    • 0
この回答へのお礼

なぜ、289未満ではないのでしょうか?なぜ、以下なのでしょうか?ご教授下さい。すみませんが。それと、これ
(3°すべてで割り切れず
if ( n / p[ s ] <= p[ s ] ) { /* 算法3。33行まで。 */
n/p(s)≦p(s)なら n を 出力(素数)
printf( "%d (s=%d)\n", n, s );
}
else {
n/p(s)>p(s)となったらやめる
goto label70; /* C で「終了」は main 関数脱出なので57行に飛ぶ。 */)
とはどういう意味でしょうか?ご教授下さい。すみませんが。

お礼日時:2021/01/26 18:03

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!