• ベストアンサー

printf( "%d", i % 10 );で?

int count; int i; scanf( "%d", &count ); for( i = 0 ; i < count ; i++ ) printf( "%d", i % 10 );「iを10で割った余り」だそうです。 i%5とした場合、   仮に5と入力すれば、01234と表示すると思いますが、 何でiを5で割れば5進数みたいにコンピュータが認識するのですか? 理論だけ勉強中で、実際試したことがありません?  よろしくお願いします。

質問者が選んだベストアンサー

  • ベストアンサー
回答No.2

例えば、246を例に考えてみます。 246を5で割ると49で余りが1 これは書き換えると 246 = 49x5 + 1 という事ですね。 次に49について同様に行なうと 49を5で割ると9で余りが4 これは書き換えると 49 = 9x5 + 4という事ですね。 最初の結果とあわせると、 246 = 9(x5x5) + 4(x5) + 1 という事ですね。 同様に9についても計算すると 246 = 1(x5x5x5) + 4(x5x5) + 4(x5) + 1 となります。 5で割った答えと5で割った余りは、5進数で一つ上の桁へ移せる部分とその桁に残る部分を分けている事になります。 10進数でも32を考えた時、30の部分は上の桁に移せる部分で(10で割った答え部分)2はその桁に残る部分(2 = 32 % 10)ですよね。

gogatunijyuku
質問者

補足

大変貴重なご回答ありがとうございます。 一応紙に書いて計算はしましたが、理解するにはもう少し時間がかかりそうです。  お待ちくださいませ^^

その他の回答 (1)

  • asuncion
  • ベストアンサー率33% (2127/6289)
回答No.1

ある数値を5で割ったあまりは、0~4の5とおりであると決まっているからです。 一般に、ある数値をnで割ったあまりは、0~(n-1)のnとおりです。 「ある数値」や「n」にいろんな数値を当てはめて実験してみてください。

関連するQ&A