使用函数显示两个区间之间的素数的 C++ 程序


素数是一个大于 1 的整数,其仅有的因数是 1 和它本身。一些最初的素数是 2、3、5、7、11、13、17 等。

两个区间之间可能存在许多素数。例如,区间 5 和 20 之间的素数是 5、7、11、13、17 和 19。

查找并显示两个区间之间素数的程序如下所示。

示例

 在线演示

#include <iostream>
using namespace std;
void primeNumbers (int lbound, int ubound) {
   int flag, i;
   while (lbound <= ubound) {
      flag = 0;
      for(i = 2; i <= lbound/2; i++) {
         if(lbound % i == 0) {
            flag = 1;
            break;
         }
      }
      if (flag == 0)
      cout<<lbound<<" ";
      lbound++;
   }
}
int main() {
   int lowerbound = 20, upperbound = 50;
   cout<<"Prime numbers between "<<lowerbound<<" and "<<upperbound<<" are: ";
   primeNumbers(lowerbound,upperbound);
   return 0;
}

输出

Prime numbers between 20 and 50 are: 23 29 31 37 41 43 47

在上面的程序中,main() 函数只包含 cout 对象和对 primeNumbers() 函数的调用,其参数为上限和下限。这可以在以下代码片段中看到。

cout<<"Prime numbers between "<<lowerbound<<" and "<<upperbound<<" are: ";
primeNumbers(lowerbound,upperbound);

在 primeNumbers() 函数中,测试从 lbound 到 ubound 的每个数字是否为素数。如果是素数,则显示它。这是使用 while 循环完成的。

在 while 循环中,flag 的初始值为 0。如果数字不是素数,则在 for 循环中将 flag 的值设置为 1。for 循环结束后,如果 flag 仍然为 0,则该数字为素数,并将其显示出来。这可以从以下代码片段中观察到。

while (lbound <= ubound) {
   flag = 0;
   for(i = 2; i <= lbound/2; i++) {
      if(lbound % i == 0) {
         flag = 1;
         break;
      }
   }
   if (flag == 0)
   cout<<lbound<<" ";
   lbound++;
}

更新于:2020年6月24日

2K+ 次浏览

开启你的职业生涯

通过完成课程获得认证

开始学习
广告