このコードで、素数でない場合は因数を出力し、素数の場合は素数として識別できるようにしたいと考えています。
#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 がループを台無しにする理由がわかりません。