C 小于整数的素数
我编写了一个程序来查找所有小于用户输入整数的素数。然而,它只是挂起。我想所有这些都在继续使用,什么的都是一团糟,我已经做了意大利面代码……有人能帮我吗C 小于整数的素数,c,C,我编写了一个程序来查找所有小于用户输入整数的素数。然而,它只是挂起。我想所有这些都在继续使用,什么的都是一团糟,我已经做了意大利面代码……有人能帮我吗 /*takes integer input, displays all primes less than that integer*/ #include <stdio.h> int main(void) { unsigned int num_in, test_num = 0, divisor = 0; _Bool
/*takes integer input, displays all primes less than that integer*/
#include <stdio.h>
int main(void) {
unsigned int num_in, test_num = 0, divisor = 0;
_Bool primestate = 0;
printf("Please enter an integer.\n");
scanf("%d", &num_in);
while(test_num < num_in) {
while(divisor < test_num) {
if(test_num % divisor == 0) {
primestate = 1;
}
test_num++;
}
if(primestate == 1) {
printf("%d is prime and less than %d.\n", test_num, num_in);
} else {
continue;
}
}
return 0;
}
/*接受整数输入,显示小于该整数的所有素数*/
#包括
内部主(空){
无符号整数,测试数=0,除数=0;
_布尔素数状态=0;
printf(“请输入一个整数。\n”);
scanf(“%d”、&num_in);
while(test_num
您从不增加test_num
或除数,因此它会卡在其中一个循环中
while(test_num < num_in) {
while(divisor < test_num) {
if(test_num % divisor == 0) {
primestate = 1;
}
divisor++; // NEW LINE
}
if(primestate == 1) {
printf("%d is prime and less than %d.\n", test_num, num_in);
} else {
continue;
}
test_num++; // NEW LINE
}
#包括
#包括
内部主(空){
无符号整数,测试数,除数;
布尔原状态;
printf(“请输入一个整数。\n”);
scanf(“%u”、&num_in);
如果(2 对于(除数=3;除数*除数,你永远不会增加test\u num
。在函数中构造你的代码。设计每个函数来实现一个单一的目的。你的代码自然会变得更清晰,更容易调试。我一直告诉自己函数很好,但从来没有使用过它们。它们看起来需要做很多工作(除数
:while(0你自己试过调试它吗?你知道,在调试器下一步一步地运行它(使用小整数),或添加调试打印。即使修复此问题,它也会在输入后挂起。更新code@user3813418刚刚注意到你也没有递增除数
。更新了代码。@user3813418刚刚检查了你的代码,你没有在正确的位置递增test_num
。请检查我的代码。我在这个问题上犯了严重错误。仍然挂起,所有这些都e> 继续
s使其无法follow@user3813418请尝试打印test_num或divisior的值,以确保这些值正确,并且程序仍在运行。
if(test_num % divisor == 0) {
#include <stdio.h>
#include <stdbool.h>
int main(void) {
unsigned int num_in, test_num, divisor;
bool primestate;
printf("Please enter an integer.\n");
scanf("%u", &num_in);
if(2 < num_in)
printf("\n%u\n", 2);
for(test_num = 3; test_num < num_in; test_num += 2){
primestate = true;
for(divisor=3; divisor * divisor <= test_num ; divisor += 2) {
if(test_num % divisor == 0) {
primestate = false;
break;
}
}
if(primestate) {
printf("%u\n", test_num);
}
}
return 0;
}