hdu2710 筛选法求素数

来源:互联网 发布:linux 报文发送工具 编辑:程序博客网 时间:2024/06/06 15:35

求n个数中拥有最大素因子的数。打表直接暴力求解

#include <iostream>#include <string>#include <cstring>#include <queue>#include <stack>#include <cmath>#include <algorithm>#include <cstdio>using namespace std;bool prime[20001];int max_prime[20001];int a[20001];int b[20001];void is_prime(){    prime[0] = false;    prime[1] = false;    for(int i = 2 ; i * i <= 20000 ; i++ )    {        if(prime[i])        {            int j = 2 * i;            while(j <= 20000)            {                prime[j] = false ;                j += i;            }        }    }}void is_max_prime(){    max_prime[0] = 0;    max_prime[1] = 0;    for(int i = 2 ; i <= 20000 ; i ++ )    {        for(int j = i ; j >= 2 ; j--)        {            if(prime[j] && i % j == 0)            {                max_prime[i] = j;                break;            }          //  if(j == i ) j /= 2;        }    }}int main(){    int n;    memset(prime , true , sizeof(prime));    is_prime();    is_max_prime();    while(cin >> n)    {        for(int i = 0 ;i < n ; i ++ )        {            cin >> a[i];            b[i] = max_prime[a[i]];        }        int num = -1 ;        int res ;        for(int i = 0 ; i < n ; i ++ )        {            if(b[i] > num )            {                num = b[i];                res = a[i];            }        }        cout << res <<endl;    }}


0 0
原创粉丝点击