C++ 家庭作业帮助:素数
我试图创建一个bool Isprime函数,它创建一个包含用户输入整数的素数列表,然后线性搜索该列表,如果输入整数在该列表中,则返回true。但是,我遇到了一个问题,即如何生成包含输入整数的列表(也就是说,如果用户输入4,列表必须有2、3和5) 这是我到目前为止的代码(我知道这是完全错误的,我尝试过做研究,但我就是不知道怎么做)C++ 家庭作业帮助:素数,c++,list,primes,C++,List,Primes,我试图创建一个bool Isprime函数,它创建一个包含用户输入整数的素数列表,然后线性搜索该列表,如果输入整数在该列表中,则返回true。但是,我遇到了一个问题,即如何生成包含输入整数的列表(也就是说,如果用户输入4,列表必须有2、3和5) 这是我到目前为止的代码(我知道这是完全错误的,我尝试过做研究,但我就是不知道怎么做) bool Isprime(int N){ int i,tprime=3; list<int>prime; prime.push_back(2);
bool Isprime(int N){
int i,tprime=3;
list<int>prime;
prime.push_back(2);
list<int>::iterator it;
for (it=prime.begin();it!=prime.end();it++){
if (*it<N){
while (i<sqrt(tprime)){
if(N%i!=0){
if(i<sqrt(tprime))
i++;
else prime.push_back(tprime);
}
tprime++;
}
}
}
for (it=prime.begin();it!=prime.end();it++){
if (*it==N)
return true;
}
return false;
}
bool Isprime(int N){
inti,tptime=3;
listprime;
素数。推回(2);
列表::迭代器;
for(it=prime.begin();it!=prime.end();it++){
if(*it你有一个已知素数的列表,你可以用它来检查每个数字,看看它是否是素数。现在你试图在外层迭代这个列表。这似乎不太正确
以下是一种方法(与您尝试的方法相匹配):
从3数到你要找的数字
确定需要检查的最大素数值(即数字的平方根)
对于每个数字,通过确定将其划分到已知素数列表中的每个元素的提醒,检查它是否为素数,直至需要检查的最大值
如果该数字是素数,则将其添加到已知素数列表中
出现语法错误。请显示实际代码。“这将创建一个包含用户输入整数的素数列表”@not rightfold这是我的代码,除了线性搜索。语法错误是什么?@Hippo,例如,如果用户输入8,列表必须包含2、3、5、7和11。列表必须包含等于或大于输入整数的素数。@JakeHafendorfer您缺少::
介于
和迭代器
。我需要检查的最大素数值必须等于或大于输入整数,而不是平方根。如何在不遍历列表的情况下实现这一点?我的观点是,一旦遇到素数h大于当前正在检查的值的平方根。由于计算平方根是一个相当昂贵的操作,您希望对每个要检查是否为素数的数字执行一次。关于您的问题:我想我给了您非常精确的指示。您是指我编写代码吗?嗯,您知道,我不需要这些练习再也没有了。