如果用户输入2,则while循环的第一次运行表示2 <= sqrt(2)
。现在,2大于sqrt(2),那么这个程序如何运行? 2 <= sqrt(2)
会是假的,那么呢?
#include <iostream>
#include <cmath>
using namespace std;
int main() {
int n; // Number to test for prime-ness
int i; // Loop counter
int is_prime = true; // Boolean flag...
// Assume true for now.
// Get a number from the keyboard.
cout << "Enter a number and press ENTER: ";
cin >> n;
// Test for prime by checking for divisibility
// by all whole numbers from 2 to sqrt(n).
i = 2;
while (i <= sqrt(n)) { // While i is <= sqrt(n),
if (n % i == 0) // If i divides n,
is_prime = false; // n is not prime.
i++; // Add 1 to i.
}
// Print results
if (is_prime)
cout << "Number is prime." << endl;
else
cout << "Number is not prime." << endl;
system("PAUSE");
return 0;
}
答案 0 :(得分:3)
while loop
永远不会进入。 is_prime
初始化为true
(不知道为什么它是int
而不是bool
),因此输入if(is_prime)
,Number is prime.
应该{}打印。
答案 1 :(得分:0)
如果您输入2,2<=sqrt(2)
是false
。所以while循环永远不会。但是,您初始化了is_primer
true
,if(is_prime)
会执行并输出"Number is primer"
。 2
是一本入门读物。你是这样做的