C++输出100以内的素数

以下是一个简单的C++程序,用于输出100以内的所有素数:

  1. #include <iostream>
  2. using namespace std;
  3. int main() {
  4.     int num, i, flag = 0;
  5.     for(num = 2; num <= 100; num++) {
  6.         flag = 0;
  7.         for(i = 2; i <= num/2; i++) {
  8.             if(num % i == 0) {
  9.                 flag = 1;
  10.                 break;
  11.             }
  12.         }
  13.         if(flag == 0) {
  14.             cout << num << " ";
  15.         }
  16.     }
  17.     return 0;
  18. }

这个程序使用嵌套循环来检查每个数字是否为素数。外层循环从2开始遍历到100,内层循环从2开始遍历到当前数字的一半。如果当前数字可以被内层循环中的任何一个数字整除,则说明它不是素数,将标记设置为1,并跳出内层循环。如果内层循环完成后标记仍然为0,则说明当前数字是素数,将其输出。

好的,以下是这个C++程序的完整代码:

  1. #include <iostream>
  2. using namespace std;
  3. int main() {
  4.     int num, i, flag = 0;
  5.     cout << "2 ";  // 输出2作为第一个素数
  6.     for(num = 3; num <= 100; num++) {
  7.         flag = 0;
  8.         for(i = 2; i <= num/2; i++) {
  9.             if(num % i == 0) {
  10.                 flag = 1;
  11.                 break;
  12.             }
  13.         }
  14.         if(flag == 0) {
  15.             cout << num << " ";
  16.         }
  17.     }
  18.     cout << endl;
  19.     return 0;
  20. }

在这个程序中,我们首先输出2作为第一个素数,然后从3开始遍历到100,使用嵌套循环来检查每个数字是否为素数。如果一个数字是素数,将其输出。最后,输出一个换行符以美观地结束输出。

好的,以下是这个C++程序的进一步优化版本:

  1. #include <iostream>
  2. using namespace std;
  3. int main() {
  4.     int num, i, flag = 0;
  5.     cout << "2 ";  // 输出2作为第一个素数
  6.     for(num = 3; num <= 100; num++) {
  7.         flag = 1;
  8.         for(i = 2; i <= num/2; i++) {
  9.             if(num % i == 0) {
  10.                 flag = 0;
  11.                 break;
  12.             }
  13.         }
  14.         if(flag == 1) {
  15.             cout << num << " ";
  16.         }
  17.     }
  18.     cout << endl;
  19.     return 0;
  20. }

在这个版本中,我们做了一些优化来提高程序的效率。我们首先将flag设置为1,然后在内层循环中检查是否存在一个因子。如果找到了一个因子,我们将flag设置为0并跳出循环。如果在内层循环结束后flag仍然为1,说明当前数字是素数,将其输出。这个优化可以避免在已经确定是合数的情况下继续进行无用的检查。

  • 14
    点赞
  • 7
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

crmeb专业二开

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值