zoukankan      html  css  js  c++  java
  • 最大素因子

    题解报告:NYOJ 520 最大素因子

    描述

    GreyAnts最近正在学习数论中的素数,但是现在他遇到了一个难题:给定一个整数n,要求我们求出n的最大素因子的序数,例如:2的序数是1,3的序数是2,5的序数是3,以此类推. 研究数论是需要很大的耐心的,为了惩罚那些没有耐心读完题目的童鞋,我们规定:1的最大素因子序数是0.

    输入

    有多组测试数据,每一行输入一个数字n.(0<n<=1000000)

    输出

    在接下来的一行,输出结果.

    样例输入

    2
    3
    4
    5

    样例输出

    1
    2
    1
    3

    解题思路:任何一个不小于2的正整数都可表示成若干个素数乘积的形式,因此通过枚举素数的倍数,即可求出每个数的最大素因子在素数表中排第几,简单打个表,时间复杂度大概为O(nlogn),约等于1.38e07。

    AC代码:

     1 #include<bits/stdc++.h>
     2 using namespace std;
     3 const int maxn=1e6+5;
     4 int n,pos[maxn];
     5 void init(){
     6     memset(pos,0,sizeof(pos));
     7     for(int i=2,cnt=0;i<maxn;++i){//从2开始
     8         if(!pos[i]){//如果i是素数
     9             cnt++;
    10             for(int j=i;j<maxn;j+=i)//填充素数i的倍数的序号,素数的整倍数的最大素因子可能是该素数,更新素数对应的呈现的次序,如果不是,以后可更新
    11                 pos[j]=cnt;
    12         }
    13     }
    14 }
    15 int main(){
    16     init();
    17     while(cin>>n){
    18         cout<<pos[n]<<endl;
    19     }
    20     return 0;
    21 }

    找最大

    Time Limit: 2000/1000ms (Java/Others)

    Problem Description:

    按顺序输出2到1e6之间每个数(包含2和1e6)的最大素因子(质因子),若为素数则输出本身。

    Input:

    本题没有输入。

    Output:

    每5个数输出一行,数与数之间用一个空格隔开,行末没有空格,最后一行不足5个数自成一行。

    Sample Input:

    无输入

    Sample Output:

    2 3 2 5 3
    7 2 3 5 11
    ...........
    1321 127 37 5
    解题思路:此题思路和上面的一样,只需枚举素数的倍数即可。
    AC代码:
     1 #include<bits/stdc++.h>
     2 using namespace std;
     3 typedef long long LL;
     4 const int maxn=1000001;
     5 int prime[maxn];
     6 void get_max_prime_factor(){
     7     memset(prime,0,sizeof(prime));
     8     for(int i=2;i<maxn;++i){
     9         if(!prime[i]){//如果i是素数
    10             for(int j=i;j<maxn;j+=i)
    11                 prime[j]=i;//将i标记为j的可能最大素因子
    12         }
    13     }
    14 }
    15 int main(){
    16     get_max_prime_factor();
    17     for(int i=2;i<maxn;++i)
    18         cout<<prime[i]<<(((i-1)%5==0||i==maxn-1)?'
    ':' ');
    19     return 0;
    20 }
  • 相关阅读:
    vue-cli3 打包路径参数说明
    vuex使用map在module的模式下的写法
    普通的JS文件中使用vuex
    vue cli 3+ 版本的source map添加方法
    vue-cli的安装及版本查看/更新
    搭建一个vue项目
    无法将“vue”项识别为 cmdlet、函数、脚本文件或可运行程序的名称
    Centos7开放及查看端口
    记录一次idae和maven设置的巨坑
    解决npm安装node-sass太慢及编译错误问题
  • 原文地址:https://www.cnblogs.com/acgoto/p/9821994.html
Copyright © 2011-2022 走看看