gpt4 book ai didi

c - For 循环一直有效,直到我添加 printf(在 C 中)

转载 作者:太空宇宙 更新时间:2023-11-04 00:38:43 24 4
gpt4 key购买 nike

我希望这段代码能够打印一个数字的因子(如果它不是质数),并在它是质数时识别它。

#include <stdio.h>

main() {
int possible_prime, n, possible_divisor;

printf( "\tThis program lists all primes <= n\n\n" );
printf( "Input n: " );
scanf( "%d", &n );
printf( "\n\n\tPrimes <= %d: \n\n", n );

for ( possible_prime = 1; possible_prime <= n; possible_prime++ ) {
/* try to find a divisor of possible_prime */

for ( possible_divisor = 1; possible_divisor < possible_prime; possible_divisor++ ) {
if ( possible_prime % possible_divisor == 0 )
printf("\n\t%d", possible_prime);
}

/* found a divisor so possible_prime is not prime */
break;

if ( possible_divisor == possible_prime )
/* exhausted possible divisors, so possible_prime is prime */
printf( "%d\n", possible_prime );

}
}

如果 if 语句下面没有 printf,它也能正常工作。当我添加这个时,程序只打印“素数 <= n”,没有别的。我不明白为什么 printf 会搞乱循环?

最佳答案

您的 break 语句位置错误。将它放在内部 for 循环中;现在它在检查 1 是否为素数后跳出外部 for 循环。

至于为什么只有在您添加内部 print 语句后才会发生这种情况,我猜您最终在这个过程中移动了一些大括号。

解决这个问题后,您可能会发现您的程序告诉您没有什么是质数。您可能需要重新检查程序的素数条件。

关于c - For 循环一直有效,直到我添加 printf(在 C 中),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18043885/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com