为什么此代码不适用于大数?

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。有什么改变?

为啥此 ajax 操作不适用于 requestScope?

为啥 Firestore 可编码支持不适用于此示例

为啥 background-size:100% 100%;不适用于此 SVG?

swift中的正则表达式不适用于此示例?

MPI 代码不适用于 2 个节点,但适用于 1 个节点