- android - 多次调用 OnPrimaryClipChangedListener
- android - 无法更新 RecyclerView 中的 TextView 字段
- android.database.CursorIndexOutOfBoundsException : Index 0 requested, 光标大小为 0
- android - 使用 AppCompat 时,我们是否需要明确指定其 UI 组件(Spinner、EditText)颜色
我在下面写了一段代码,要求用户输入并检查它是否为质数。我现在想以此为基础,所以当用户输入一个数字时,我会计算到这个数字的素数并显示。例如,如果用户输入 10,我的程序将输出“有 4 个质数”。我的想法是我必须将每个质数存储到一个 vector 中,但我的问题是如何存储?
#include <iostream>
#include <cmath>
#include <vector>
using namespace std;
int main()
{
vector <double> primeHolder
int x, i, flag;
cout << "Enter a positive integer ";
cin >> x;
for (i = 2; i <= x/2; i++)
{
if(x%i == 0)
{
flag = 1;
break;
}
}
if (flag == 0)
cout << "This is a prime number";
else
cout << "This is not a prime number";
return 0;
}
最佳答案
首先,定义一个 isPrime()
函数使您的代码更具可读性是有意义的:
bool isPrime(int x)
{
for(int i = 2; i <= x/2; i++)
{
if(x%i == 0)
{
return false;
}
}
return true;
}
然后你可以按照下面的方式编写你的main()
:
int main()
{
int input;
cout << "Enter a positive integer: ";
cin >> input;
// You deal with integers here, so you shouldn't use vector<double>.
// As all numbers are positive, you could also use unsigned int.
vector<int> primeHolder;
for(int i = 2; i <= input; i++)
{
// Test all values that are not larger than the input value.
if(isPrime(i))
{
// If the tested value is a prime, append it to the vector.
primeHolder.push_back(i);
}
}
cout << "There are " << primeHolder.size() << " primes:" << endl;
for(size_t j = 0; j < primeHolder.size(); j++)
{
// Print every prime number that was stored in the vector.
// You can access vector elements similar to an array,
// but you can also use iterators.
cout << primeHolder[j] << endl;
}
return 0;
}
此代码为您的示例输入提供以下输出:
Enter a positive integer: 10
There are 4 primes:
2
3
5
7
注意:上面的代码效率很低。如果你想处理大量输入,你应该寻找更智能的算法,例如Sieve of Eratosthenes ,正如@theoden 在评论中提到的那样。
如果您想了解更多关于vector
类模板的功能,请查看documentation .该文档还包含示例代码。
关于c++ - 如何将质数放入 vector 中?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34653274/
我知道这不是寻找素数的最佳方法,也不是最有效的方法;但是,我似乎无法找到 169 算作素数的原因(就我而言,对于较小的数字,它可以正常工作)。 public static int checkPrime
有人可以指导我获取素数吗?这是家庭作业,所以我不想要答案,但一些指示将不胜感激。这真的让我很烦:( 我想我很接近。但是我遇到的问题是数字 25 和 35。它们不是质数,但是这个函数正在返回它们 var
利用正则判别素数,来源于网络,神人! 复制代码 代码如下: Set regex = New RegExp regex.Pattern = "^1?$&b
质数又称素数。一个大于1的自然数,如果除了1和它自身外,不能被其他自然数整除的数;否则称为合数。根据算术基本定理,每一个比1大的整数,要么本身是一个质数,要么可以写成一系列质数的乘积;而且如果不考虑
我在 Ruby on Rails 中尝试如何找到质数。这是我的代码: 助手:app/helpers/test_helper.rb module TestHelper
lower = int(input("from:")) upper = int(input("to:")) for num in range(lower,upper + 1): if num >
最近我对 LINQ 很感兴趣。我正在尝试获取质数。我实际上做得很好,但我的代码没有显示低于 Sqrt(n) 的素数。 static void Main(string[] args) {
在尝试设计算法时,我偶然发现了这个问题。这不是家庭作业。 令 P_i = 前 i 个素数的数组。现在我需要最小的 i 这样 Sum 1 / (P_i[n]*P_i[n]) >= 1. (如果这样的
本文已收录到 AndroidFamily ,技术和职场问题,请关注公众号 [彭旭锐] 提问。 大家好,我是小彭。 上周跟大家讲到小彭文章风格的问题,和一些朋友聊过以后,
我是新来的。我正在尝试解决此练习 Problem 18只是为了加强我的解决能力。我已经编码了答案。该任务要求“在 1,000,000 以下的质数中,有多少个数位之和等于两周中的天数?” (两周是 14
我是一名优秀的程序员,十分优秀!