为什么此代码不适用于大数?
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了为什么此代码不适用于大数?相关的知识,希望对你有一定的参考价值。
我正在做Bjarne Stroustrup编程原理和使用C ++的练习中的问题4.11。创建一个程序以按顺序使用素数向量(prime [2,3,5,...])查找从1到最大范围内的所有素数。这是我的解决方案:
#include <iostream>
#include <string>
#include <vector>
#include <bits/stdc++.h>
using namespace std;
bool check_prime(vector<int> &prime,int n)
int count=0;
for(int i=0;prime[i]<=n||i<=prime.size()-1;++i)
if(n%prime[i]==0) count++;break;
bool result=0;
if(count==0) result = 1;
else result = 0;
return result;
int main()
vector<int> prime2;
int max;
cout<<"Please enter a max value:";
cin>>max;
for(int i=2;i<=max;++i)
if(check_prime(prime,i)) prime.push_back(i);
for(int i=0;i<=prime.size()-1;++i)
cout<<prime[i];
if(i<=prime.size()-2) cout<<',';
我的代码适用于小于23的数字,但不适用于大于23的数字。如果我在Windows 10中打开该程序,则最大工作号增加到47,大于该值的任何号将无法工作。
我正在做Bjarne Stroustrup编程原理和使用C ++的练习中的问题4.11。创建一个程序以使用质数向量按顺序找到从1到最大范围内的所有素数。(...
答案
您在prime[i]<=n
之前检查i<=prime.size()-1
。然后,如果它是正确的(即使i>prime.size()-1
(这是随机行为),也要对其进行处理,从而产生错误的结果。
以上是关于为什么此代码不适用于大数?的主要内容,如果未能解决你的问题,请参考以下文章
代码适用于嵌入式Apache Tomcat 8但不适用于9。有什么改变?