以下是一个简单的C++程序,用于输出100以内的所有素数:
- #include <iostream>
- using namespace std;
- int main() {
- int num, i, flag = 0;
- for(num = 2; num <= 100; num++) {
- flag = 0;
- for(i = 2; i <= num/2; i++) {
- if(num % i == 0) {
- flag = 1;
- break;
- }
- }
- if(flag == 0) {
- cout << num << " ";
- }
- }
- return 0;
- }
这个程序使用嵌套循环来检查每个数字是否为素数。外层循环从2开始遍历到100,内层循环从2开始遍历到当前数字的一半。如果当前数字可以被内层循环中的任何一个数字整除,则说明它不是素数,将标记设置为1,并跳出内层循环。如果内层循环完成后标记仍然为0,则说明当前数字是素数,将其输出。
好的,以下是这个C++程序的完整代码:
- #include <iostream>
- using namespace std;
- int main() {
- int num, i, flag = 0;
- cout << "2 "; // 输出2作为第一个素数
- for(num = 3; num <= 100; num++) {
- flag = 0;
- for(i = 2; i <= num/2; i++) {
- if(num % i == 0) {
- flag = 1;
- break;
- }
- }
- if(flag == 0) {
- cout << num << " ";
- }
- }
- cout << endl;
- return 0;
- }
在这个程序中,我们首先输出2作为第一个素数,然后从3开始遍历到100,使用嵌套循环来检查每个数字是否为素数。如果一个数字是素数,将其输出。最后,输出一个换行符以美观地结束输出。
好的,以下是这个C++程序的进一步优化版本:
- #include <iostream>
- using namespace std;
- int main() {
- int num, i, flag = 0;
- cout << "2 "; // 输出2作为第一个素数
- for(num = 3; num <= 100; num++) {
- flag = 1;
- for(i = 2; i <= num/2; i++) {
- if(num % i == 0) {
- flag = 0;
- break;
- }
- }
- if(flag == 1) {
- cout << num << " ";
- }
- }
- cout << endl;
- return 0;
- }
在这个版本中,我们做了一些优化来提高程序的效率。我们首先将flag设置为1,然后在内层循环中检查是否存在一个因子。如果找到了一个因子,我们将flag设置为0并跳出循环。如果在内层循环结束后flag仍然为1,说明当前数字是素数,将其输出。这个优化可以避免在已经确定是合数的情况下继续进行无用的检查。