【发布时间】:2015-11-11 08:47:58
【问题描述】:
我正在尝试制作一个惊人的 Prime 系列(APS),其中有一个向量 myvector 我的向量[0] = 我的向量[1] = 0
对于 n > 1,myvector[n] = myvector[n - 1] + f(n),其中 f(n) 是 n 的最小素因子。
输入 3(测试用例数)
2
3
4
输出
2
5
7
#include<iostream>
#include<math.h>
#include<vector>
using namespace std;
bool isPrime(int p)
{
int c=sqrt(p);
if(c==1)
{
return true;
}
else
{
for(int i=2;i<=c;i++)
{if(p%i==0)
{return false;}
else
{return true;}
}
}
}
int func(int n1)
{
if(n1%2==0)
{
return 2;
}
else
{
if(isPrime(n1)==true)
{
return n1;
}
else
{
int c1= sqrt(n1);
for(int i=2;i<=c1;i++)
{
if(n1%i==0 && isPrime(i)==true)
{
return i;
}
}
}
}
}
main()
{
int t;
std::vector<int> myvector;
myvector[0]=myvector[1]=0;
while(t--)
{
int n;
cin>>n;
while(n>1)
{
myvector[n]=myvector[n-1]+func(n);
cout<<myvector[n]<<endl;
}
}
}
【问题讨论】:
-
什么你的代码出错了?
-
它给出了运行时错误,因此在我的控制台屏幕中不可见
-
t 没有初始值,并且要通过索引访问向量,您需要 std::vector
myvector (10); // 10 个零初始化元素
标签: c++ numbers primes prime-factoring