素数を使って整数の素因数分解を行うプログラムを考えています。
素数を使って整数の素因数分解を行うプログラムを考えています。
関数p_flagは、整数I(2<=i<=n)について、iが素数であるとき、配列要素flag[i]に1を代入し、そうでないときに0を代入するプログラムです。素数でないものは、それより小さい素数の整数倍としてふるい落とします。
Main関数では、
変数mに2以上の整数を読み込み、その値を小さい素数で順に割っていき、商が1になるまで繰り返します。
これを実行するとキーボードからmの値を聞かれて入力したところで、プログラムが進まなくなってしまいます。お助けください><
#include <stdio.h>
void p_flag(int flag[], int n){
int i,j;
for (i =2; i <= n; i++){
flag[i] = 1;
printf("~~%d~~",i);
if(i <= 3){
for (int k = 2; k <=i-1; k++ ){
if(flag[k] != 0){
int check = i % k;
printf("%d",k);
if (check == 0){
flag[i] = 0;
}
}
}
}
}
}
int main(void){
/*void p_flag();*/
int flag[10000], m, md, i;
printf("integer 2 or above: \n");
scanf("%d", &m);
p_flag(flag, m);
md = m;
for (i = 2; i < m/*flag[i]の要素数*/;i++){
if(flag[i] != 0){
while(m / flag[i] != 1){
printf("%d",flag[i]);
md = m / flag[i];
}
}
}
}