文章

3

粉丝

354

获赞

2

访问

26.8k

头像
简单思路(素因数数组)
P1284 上海交通大学机试题
发布于2021年1月26日 17:35
阅读数 8.2k

具体思路如下:1. 求出n!的所有素因数,开一个数组p1,以值为下标保存个数。该题n为1000以内,开一个1000的数组就可以了。默认值都为0

                       2. 求出a的所有素因数,同样开一个数组p2,以值为下标保存个数。默认值都为0

                      3. 通过求得的素数数组把p1,p2数组的值全部赋值完毕。比如得到一个素因数i,就p1[i]或者p2[i]的值加一就可以了。

                     4. 最后就是循环比较了,先设置K为0,每次循环k+1,循环内部是比较p1和p2的所有的值(比较素数就可以了,因为先前只存了素因数,要不然比较慢),若p1[prime[i]]<p2[prime[i]]*k,就可以退出了,因为此时必然不可能整除了。

#include<bits/stdc++.h>
using namespace std;

const int max1=1000+5;
int prime[max1];
void getprime(){
    memset(prime,0,sizeof(prime));
    for(int i=2;i<=max1;i++){
        if(!prime[i]) prime[++prime[0]]=i;
            for(int j=1;j<=prime[0]&&prime[j]*i<=max1;j++)
            {
                prime[prime[j]*i]=1;
                if(i%prime[j]==0)break;

            }
    }
}

int main(){
	int n...
登录查看完整内容


登录后发布评论

暂无评论,来抢沙发