c++ - 显示所有小于某个数的素数
问题描述
我已经学习 C++ 几个星期了,但是,我卡住了,我有一个函数 isPrime(),可以很好地显示数字是否为素数,我需要显示所有小于 200 的素数。但它不起作用请参阅标有注释的行
#include <iostream>
using namespace std;
// Function Prototypes
bool isPrime(int);
int main()
{
int Num;
cout << "This program let you know if the number entered is a "
<< "prime number.\nEnter a number: ";
cin >> Num;
cout << "The number " << Num;
if (isPrime(Num))
{
cout << " is a Prime number." << endl;
}
else
cout << " is not a Prime number." << endl;
return 0;
}
//isPrime
bool isPrime(int Num)
{
if (Num > 1)
{
for (int i = 2; i <= Num; ++i)
{
if (Num % i == 0)
{
if(Num == i)
return true;
else if
for(int n = 2; n < 200; n++) { // HERE
// isPrime will be true for prime numbers
isPrime = isPrimeNumber(n);
if(isPrime == true)
cout<<n<<" ";
}
return 0;
else
return false;
}
}
}
return false;
}
解决方案
您在错误的位置添加了循环。该功能仅用于检查特定数字。您需要创建另一个函数来打印所有小于 200 的素数,或者您可以像我一样直接在 main() 函数中添加循环。
#include <iostream>
using namespace std;
// Function Prototypes
bool isPrime(int);
int main()
{
int Num;
cout << "This program let you know if the number entered is a "
<< "prime number.\nEnter a number: ";
cin >> Num;
cout << "The number " << Num;
// Check numbers here
for(int n = 2; n < 200; n++) {
if (isPrime(n)){
cout << n << " is a Prime number." << endl;
}
}
return 0;
}
//isPrime - This is your original isPrime Code
bool isPrime(int Num)
{
if (Num > 1)
{
for (int i = 2; i <= Num; ++i)
{
if (Num % i == 0)
{
if(Num == i)
return true;
else
return false;
}
}
}
return false;
}
推荐阅读
- php - 使用 PHP 获取 JSON 属性名称后跟项目名称值
- macros - 如何在 LISP 中定义递归返回引用列表的函数
- c# - Array.Sort / IComparable 有时在第一次调用时无法正确排序
- javascript - Bootstrap 4:第三次点击后切换弹出框
- c - 了解 makefile 的依赖级别
- wordpress - 如何减少 Wordpress 中标题和 iframe 之间的空间?
- git - 处理来自 magit 扩展的交互式 git 命令
- python - 在 Google App Engine 中使用 ctypes 来使用二进制文件?
- python - pip 无法解析 require.txt 中的依赖关系
- php - Laravel 未定义方法