ユーザーが入力した数値の最大の素因数を見つけようとしています。
これまでのところ、私は持っています:
#include <stdio.h>
#include <stdlib.h>
int main(void){
int N;
printf("Enter a positive number: ");
scanf("%d", &N);
int divisor = 1;
for (int i = 2; i <= N; i++){
if (N % i == 0){
for (int j = 2; j < i; j++){
if (i % j == 0 && j != i){
break;
}
else{
divisor = i;
}
}
}
}
printf("%i\n", divisor);
return EXIT_SUCCESS;
}
しかし、これはうまくいかないようです。別のアプローチを試すのではなく、上記のアプローチが機能しない理由を最初に理解しようとしています。
上記のコードは、最初に数値 i がユーザー入力の数値で割り出せるかどうかをチェックし、次に i が素数であるかどうかをチェックし、プロセス全体を繰り返して、より大きな素数が存在するかどうかを確認することにより、すべての可能な素因数を反復することになっています。要因。ただし、ユーザーが入力した数値を常に返すため、機能しません.Nは素因数を与える場合があり、ほとんどの場合、Nまたは他の非素数を返します。