独習Cの練習問題_3_6_1の正答の18行目の理解について

フォーラム(掲示板)ルール
フォーラム(掲示板)ルールはこちら  ※コードを貼り付ける場合は [code][/code] で囲って下さい。詳しくはこちら
パクパク

独習Cの練習問題_3_6_1の正答の18行目の理解について

#1

投稿記事 by パクパク » 13年前

練習問題3_6_1
2~1000までの素数を全て表示する。

以下のコードの18行目にあるif(!(num % i))が理解出来ずにいます。余りがあるのか、無いのか、混乱しています。どのように理解したらよいでしょうか。ご教授お願い致します。

コード:

#include <stdio.h>

int main(void)
{
	int num, i, prime;

	printf("2~1000までの素数を全て表示する。\n");

	for(num = 2; num < 1001; num++){
	prime = 1;
	//約数を調べる
	for(i = 2; i <= (num / 2); i++)
	if(!(num % i))
		prime = 0;
	if(prime)
		printf("%d は素数です。\n" , num);
	}
	
	return 0;
}

box
記事: 2002
登録日時: 15年前

Re: 独習Cの練習問題_3_6_1の正答の18行目の理解について

#2

投稿記事 by box » 13年前

パクパク さんが書きました:

コード:

	if(!(num % i))

コード:

	if(num % i == 0)
と同じ意味です。つまり「割り切れたら」ということです。
ていうか、この前の質問に対する回答において私が書いたサンプルコードで、もともとは

コード:

	if(!right)
となっていた箇所を、私が

コード:

	if(right == 0)
と書き換えていたことに気づいていれば、今回の質問はなかったはずです。

# 独習Cのサンプルコードって何だか一癖あるような気がします。
「2~1000」を表現するならば、素直に

コード:

    if (num = 2; num <= 1000; num++)
と書けばいいものを。同じ意味とはいえ、わざわざ「1001未満」と書く必要はなかろう、と。
バグのないプログラムはない。
プログラムは思ったとおりには動かない。書いたとおりに動く。

パクパク

Re: 独習Cの練習問題_3_6_1の正答の18行目の理解について

#3

投稿記事 by パクパク » 13年前

返信ありがとうございます。

申し訳ありません。同じ質問を二度したようなものですね。
次回から精読するように心がけます。

ご教授感謝致します。

パクパク

Re: 独習Cの練習問題_3_6_1の正答の18行目の理解について

#4

投稿記事 by パクパク » 13年前

上記のように言っておいて解決しておりませんでした。

閉鎖

“C言語何でも質問掲示板” へ戻る