我试图找到用户输入数字的最大素数。
到目前为止,我有:
#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 或其他一些非素数。