C言語を使ってみよう! - 動かしてみよう! - 素数
参考サイトを見ながら実際に動くプログラムを作ってみます。コマンドラインで入力していくものです。ターミナルの操作が必要になりますが、"Replit"を使うと右側にターミナルの画面が出ているのですぐに使うことができます。
素因数分解
#include <stdio.h>
#include <stdlib.h>
void main( )
{
char c[128];
int n0,n; // 整数
int ns=2; // 素因数
int j; // 乗数
printf("\n★素因数分解★\n");
printf("\n分解する整数: "); fflush(stdout);
gets(c); n0=atoi(c); // 整数を入力
for( n=n0; n>=ns; ns++ )
{
for( j=0; n%ns==0; j++ ) // 割り切れる間繰り返す
{
n/=ns;
}
if ( j==0 ) continue; // 1回も割り切れなかった
printf("素因数:%d 乗数:%d\n",ns,j);
}
}
実行すると
と出てくるので数字を入力します。例えば"9"と入力してreturnすると
と素因数と条数が出てくるようになっています。
それでは中身を見てきましょう。
追加しています。
"fflush"でストリームの動作を制御。
実際の動きとしては
値を受け取ったときの動作
で入力された数字は文字列として認識されているので数字に変換します。
次に受け取った数字を"forループ"で
繰り返して入力した数字を一つずつ取り出してさらに"forループ"で素数なので割れなくなるまで割ります。
取り出す最初の数字はこの場合"n0"からスタート。"ns"が"n"より大きくなるまで、"ns"を"1"づつ増やしていきます。
次のループで
"n%ns"を繰り返す命令です。この場合は"j"が"0"スタート"j"を1づつ増やし、 "n%ns==0"になるまで繰り返します。
そして割れなくなったら、 次の操作へ、
"j"が"0"であれば"continue;" 次の動作をスキップします。そして
で,"ns"が素数, "j"が条数(何回割ったか)の答えを出力します。
この記事が気に入ったらサポートをしてみませんか?