ページ 11

各変数の変化の様子

Posted: 2019年10月14日(月) 04:43
by まも
キーボードから入力された正の整数が素数であるかを判定するプログラムを作成せよ。試し割り算を使え。そのプロ グラムのフローチャートと各変数の変化の様子も書け。そ れらを用いてプログラムが正しく動いていることを説明せよ。
という問題で、変数の変化の様子をかけと言われたのですが変数の変化の様子とはイマイチどういうことかわかりません。どのようなことを書けばよいのでしょうか、どなたかご教授お願いします。

コード:

#include <stdio.h>
void main()
{
	int i, Num;
	printf("数字入力:");
	scanf_s("%d", &Num);
	for (i = 2; i < (Num / 2); i++) {
		if (Num % i == 0) {
			printf("%dは素数ではありません\n", Num);
			return;
		}
	}
	printf("%dは素数です\n", Num);

Re: 各変数の変化の様子

Posted: 2019年10月14日(月) 17:18
by asd
ほとんど答えになってしまうので回答が難しいのですが、
このプログラムの場合、変数はiとNumの2つがあり、
・Numはscanf_s関数で値が代入される
・iはfor文内部で毎ループごとに変化する
 →入力値やループ回数によりfor文内の計算式の結果(Num / 2やNum % i)も当然変化する
ことはわかるかと思います。

なので適当なNumを入力したとして、for文ループの1回目、2回目、3回目…というように変数がどう変わるかを列挙すればいいのではないでしょうか?
(具体的な値は?にしていますしNumを9にしているのもあくまで一例です)

例)数字入力で9を入力した場合
Num=9、
forループ初期値:i=?、Num / 2=?
forループ1回目:i=?、Num % i =?、Num / 2=?
forループ2回目:i=?、Num % i =?、Num / 2=?
(略)

こうすると入力された値をもとにforループ内で計算や終了判定に用いている各値がどう変化し、
どこでループを終了するのかが見えるようになるのかなと思います。