はじめての C
min 以上で n の最小の倍数を計算する
プログラムを作成せよ。
- /* mini */
- #include
- main()
- {
- int n, min, x;
- x = 0;
- printf("min 以上で最小の\n");
- printf("n の倍数を\n");
- printf("算出します。\n\n");
- printf("n の数を入力してください n = ");
- scanf("%d", &n);
- printf("min の数を入力してください min = ");
- scanf("%d", &min);
- if ( min > (min/n) * n ) {
- x = (min/n) * n + n;
- } else {
- x = min;
- }
- printf("\n");
- printf("%d 以上で最小の\n", min);
- printf("%d の倍数は\n", n);
- printf("%d ですネ。\n", x);
- }
min 以上 max 未満の n の倍数の和を計算する
プログラムを作成せよ。
まず for文を組み立て直してみる。
- 初期化 : 初期値を min に
- 継続条件 : 値が max になるまで
- 増分処理 : 値に n を加えていく
↓こんな感じで
- for ( i = min ; i < max ; i = i + n ) {
- x = x + i; /* x が n の倍数になる */
- }
変数は下の5つ
- n : もとの数
- min : 最小の数
- max : 最大の数
- i : くりかえす回数
- x : n の倍数
- /* max */
- #include
- main()
- {
- int n, min, max, i, x;
- x = 0;
- printf("これから min 以上 max 未満の\n");
- printf("すべての n の倍数の和を\n");
- printf("計算します。\n\n");
- printf("最初に n の数を入力してください n = ");
- scanf("%d", &n);
- printf("つぎに min の数を入力してください min = ");
- scanf("%d", &min);
- printf("最後に max の数を入力してください max = ");
- scanf("%d", &max);
- if ( min > (min/n) * n ) {
- min = (min/n) * n + n;
- }
- for ( i = min ; i < max ; i += n ) {
- x += i;
- }
- printf("\n");
- printf("%d 以上 %d 未満の\n", min, max);
- printf("すべての %d の倍数の和は\n", n);
- printf("%d になります。\n\n", x);
- printf("(min は %d の倍数に直しました、不悪)\n", n);
- }
for文で 初期化と増分処理をいじる ということは まったく思いつかなかった。こんなことが できるのか ...
プログラム baisuu もこの方法で書きかえると、
変数は下の4つ
- n : もとの数
- max : 最大の数
- i : くりかえす回数
- x : n の倍数
- /* baisuu.2 */
- #include
- main()
- {
- int n, max, i, x;
- x = 0;
- printf("これから 1 以上 max 未満の\n");
- printf("すべての n の倍数の和を\n");
- printf("計算します。\n\n");
- printf("n の数を入力してください n = ");
- scanf("%d", &n);
- printf("max の数を入力してください max = ");
- scanf("%d", &max);
- for ( i = 0 ; i < max ; i = i + n ) {
- x = x + i ;
- }
- printf(\n");
- printf("1 以上 %d 未満の\n", max);
- printf("すべての %d の倍数の和は\n", n);
- printf("%d になります。\n", x);
- }
text: 金山典世さん(稚内北星)のページ