文章
26
粉丝
0
获赞
149
访问
6.1k
一开始没有把素数保存在一个数组里,求质因数的时候,for循环i从2遍历到maxn,超时,正确率0
修改:在getprime函数里面用素数重新覆盖prime数组,prime[0]保存10^6内的素数个数
#include <bits/stdc++.h>
using namespace std;
#define maxn 1000000
int prime[maxn]={0};
void getprime(){
//memset(prime,0,sizeof(prime));
prime[1]=1;//是合数
for(int i=2;i<maxn;i++){
if(prime[i]==0){
prime[0]++;
prime[prime[0]]=i;
for(int j=2;i*j<maxn;j++)
prime[i*j]=1;
}
}
}
int main(){
getprime();
int n;
while(cin>>n){
int cnt=0;
for(int i=1;i<=prime[0];i++){//修改前:for(int i=1;i<=maxn && prime[i]==0;i++)
 ...
登录后发布评论
暂无评论,来抢沙发