文章

26

粉丝

0

获赞

149

访问

6.1k

头像
质因数个数 题解:
P1156 清华大学上机题
发布于2026年2月11日 22:32
阅读数 310

一开始没有把素数保存在一个数组里,求质因数的时候,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++)
         ...

登录查看完整内容


登录后发布评论

暂无评论,来抢沙发