Tim*_*der 0 c++ primes translation
在C++中,使用矢量头,如何找到元素的数量?
#include <iostream>
#include <cmath>
#include <fstream>
#include <cstdlib>
#include <vector>
using namespace std;
int primer(int max);
int main()
{
system("pause");
return 0;
primer(1000);
}
int primer(int max){
vector<int> a;
a[1]=2;
for (int i=2;i<=max;i++){
bool prime=true;
for (int ii=1;ii<=#a;ii++) {
if i/a[ii]==math.floor(i/a[ii]) {
prime=false;
}
}
if prime==true {
a[#a+1]=i;
}
}
for (i=1;i<=#a;i++) {
cout << a[i]);
}
}
}
Run Code Online (Sandbox Code Playgroud)
我最初为lua编写代码,这是我尝试将其转换为C++.我会很感激细节,例如,对坏线的特定替代品.我试图用a.size替换#a,但它没有用.
修订:
#include <iostream>
#include <cmath>
#include <fstream>
#include <cstdlib>
#include <vector>
using namespace std;
int primer(int max);
int main()
{
primer(5);
system("pause");
return 0;
}
int primer(int max){
vector<int> a;
a[1]=2;
for (int i=2;i<=max;i++){
bool prime=true;
for (int ii=0;ii<a.size();ii++) {
if (i/a[ii]==floor(i/a[ii])) {
prime=false;
}
}
if (prime==true) {
a.push_back(i);
}
}
for (int iii=0;iii<=a.size();iii++) {
cout << a[iii] << endl;
}
}
Run Code Online (Sandbox Code Playgroud)
它没有运行就崩溃了.这是为什么原因?
回答您的直接问题:
a.size(); // use size as a function
Run Code Online (Sandbox Code Playgroud)
但是您的代码还有其他一些问题:
vector<int> a;
a[1]=2;
Run Code Online (Sandbox Code Playgroud)
通常你需要预先设置它的大小a,因为C++必须为其分配空间。不过您可以使用push_back(),这将根据需要逐渐添加空间。
另外,C++ 数组从 0 开始计数:
for (int ii=1;ii<=#a;ii++) {
Run Code Online (Sandbox Code Playgroud)
这应该是
ii = 0
Run Code Online (Sandbox Code Playgroud)
由于数组从 0 开始,因此它们以 结束size() - 1,而不是size()。