【问题标题】:Timing generator in c++c++中的定时生成器
【发布时间】:2013-02-10 21:32:31
【问题描述】:

我完成了一个素数生成程序。现在,我想测试所有素数所需的时间并将这些数字存储在一个数组中。我写了这段代码....

#include <iostream>
#include <ctime>
using namespace std;

int main ()
{


    int long MAX_NUM = 1000000;
    int long MAX_NUM_ARRAY = MAX_NUM+1;
    int long sieve_prime = 2;
    int long sieve_prime_constant = 0;
    int time_store = 0;
    int *Num_Array = new int[MAX_NUM_ARRAY];
    std::fill_n(Num_Array, MAX_NUM_ARRAY, 3);
    Num_Array [0] = 1;
    Num_Array [1] = 1;

while (time_store<=100)
{
    clock_t time1,time2;
    time1 = clock();
    while (sieve_prime_constant <= MAX_NUM_ARRAY)
    {
        if (Num_Array [sieve_prime_constant] == 1)  
        {

            sieve_prime_constant++;
        }
        else
        {
            Num_Array [sieve_prime_constant] = 0;  
            sieve_prime=sieve_prime_constant; 
             while (sieve_prime<=MAX_NUM_ARRAY - sieve_prime_constant)  
            {
                sieve_prime = sieve_prime + sieve_prime_constant;
                Num_Array [sieve_prime] = 1;
            }
            if (sieve_prime_constant <= MAX_NUM_ARRAY)
            {
                sieve_prime_constant++;
                sieve_prime = sieve_prime_constant;
            }
        }
    }
    time2 = clock();
    delete[] Num_Array;
    cout << "It took " << (float(time2 - time1)/(CLOCKS_PER_SEC)) << " seconds to    execute    this loop." << endl;
    cout << "This loop has already been executed " << time_store << " times." << endl;
    float Time_Array[100];
    Time_Array[time_store] = (float(time2 - time1)/(CLOCKS_PER_SEC));
    time_store++;
}


return 0;

}

当我运行它时,程序似乎会经历一次长循环然后崩溃。出了什么问题,我该如何解决?

【问题讨论】:

    标签: c++ generator average timing


    【解决方案1】:

    您在第一个循环结束时删除了 numArray,因此当您再次循环时引用 NULL...

    不确定您打算对 delete[] 语句做什么...但无论您打算做什么 - 要么在其他地方执行,要么执行其他操作,或者重新初始化数组,或者……您可以毫无疑问,从这里弄清楚。

    【讨论】:

    • 是的,我实际上发了一个新帖子“未找到 Prime Generation/Limited Generation 的时间”,感谢您的提问,我希望能得到任何帮助!
    猜你喜欢
    • 1970-01-01
    • 2017-03-31
    • 1970-01-01
    • 2021-03-25
    • 1970-01-01
    • 2019-12-27
    • 2010-09-10
    • 2010-12-10
    相关资源
    最近更新 更多