问个问题
  • 板块学术版
  • 楼主FJ_OIer
  • 当前回复15
  • 已保存回复15
  • 发布时间2022/12/4 18:40
  • 上次更新2023/10/27 00:28:53
查看原帖
问个问题
500031
FJ_OIer楼主2022/12/4 18:40
#include<bits/stdc++.h>
#pragma GCC optimize("Ofast","inline","-ffast-math")
#pragma GCC target("avx,sse2,sse3,sse4,mmx")
using namespace std;
int n;
bool isprime[100000001];
int main(){
    cin>>n;
    memset(isprime,1,sizeof(isprime));
    isprime[1]=0;
    double t=clock();
    for (int i=2;i<=n;i++){
        for (int j=2;j*i<=n;j++){
            isprime[j*i]=0;
        }
    }
    //for (int i=1;i<=n;i++){
    //    if (isprime[i]){
    //        cout<<i<<" ";
    //    }
    //}
    cout<<(clock()-t)/CLOCKS_PER_SEC;
    return 0;
}

上述代码如果放到 IDE 中会出现问题(不是语法的问题,自己试一试就知道了)。但是如下代码却不会出现问题:

#include<bits/stdc++.h>
#pragma GCC optimize("Ofast","inline","-ffast-math")
#pragma GCC target("avx,sse2,sse3,sse4,mmx")
using namespace std;
int n;
bool isprime[100000001];
int main(){
    cin>>n;
    memset(isprime,1,sizeof(isprime));
    isprime[1]=0;
    time_t t=clock();//仅仅只有这里改变
    for (int i=2;i<=n;i++){
        for (int j=2;j*i<=n;j++){
            isprime[j*i]=0;
        }
    }
    //for (int i=1;i<=n;i++){
    //    if (isprime[i]){
    //        cout<<i<<" ";
    //    }
    //}
    cout<<(clock()-t)/CLOCKS_PER_SEC;
    return 0;
}

why?

2022/12/4 18:40
加载中...