【发布时间】:2016-07-05 12:16:21
【问题描述】:
给定一个数 N (
素数是指一个数,它要么是素数,要么可以表示为素数对自身的幂,即素数^素数,例如4、27等
我尝试使用 seive 找到所有的素数,然后将它们存储在一个向量中(下面的代码),但现在我不知道如何找到与给定数字相加的最小素数。
这是我的筛子:
#include<algorithm>
#include<vector>
#define MAX 10000
typedef long long int ll;
ll modpow(ll a, ll n, ll temp) {
ll res=1, y=a;
while (n>0) {
if (n&1)
res=(res*y)%temp;
y=(y*y)%temp;
n/=2;
}
return res%temp;
}
int isprimeat[MAX+20];
std::vector<int> primeat;
//Finding all prime numbers till 10000
void seive()
{
ll i,j;
isprimeat[0]=1;
isprimeat[1]=1;
for (i=2; i<=MAX; i++) {
if (isprimeat[i]==0) {
for (j=i*i; j<=MAX; j+=i) {
isprimeat[j]=1;
}
}
}
for (i=2; i<=MAX; i++) {
if (isprimeat[i]==0) {
primeat.push_back(i);
}
}
isprimeat[4]=isprimeat[27]=isprimeat[3125]=0;
primeat.push_back(4);
primeat.push_back(27);
primeat.push_back(3125);
}
int main()
{
seive();
std::sort(primeat.begin(), primeat.end());
return 0;
}
【问题讨论】:
-
“请帮我做作业”不是一个好的 Stack Overflow 问题。如果您edit您的问题描述了您到目前为止所尝试的内容以及您遇到的问题,那么我们可以尝试帮助您了解您的具体问题。您还应该阅读How to Ask。
-
@TobySpeight 这是我已经完成的代码(ideone 链接),但由于我是新手,我不知道如何插入代码。它在ideone上ideone.com/E2Eozd
-
我已经从该链接添加了代码(减去不必要的包含、未使用的变量和混淆宏)。 HTH。
-
@TobySpeight 非常感谢你能帮我在哪里学习 stackoverflow 上的编辑
-
@coder - 如果您有关于编辑的问题,the help center 没有回答,您应该在Meta Stack Overflow 上提问。
标签: c++ dynamic-programming primes