zoukankan      html  css  js  c++  java
  • 唯一分解定理

    包括两个断言:断言1:数n可以以某种方式分解成素数乘积。

                                 断言2:仅有一种这样的因数分解。(除因数排

                                    重外)

    其可化简为

    唯一分解定理,也叫算术基本定理,指的是任意n>=2,都可以分解为    

    对于一个数n,若     ,则n的因子数

    思路,先打个素数表,然后遍历;

    #include <iostream>
    #include <bits/stdc++.h>
    using namespace std;
    typedef long long ll;
    #define maxn 100000000
    bool vis[maxn];
    int prime[maxn],x,a[100005];
    void oulasai(int n)  //欧拉筛
    {
        for(int i=2;i<=n;i++)
        {
            if(!vis[i]) prime[x++]=i;
            for(int j=0;j<x;j++)
            {
                if(i*prime[j]>n) break;
                vis[i*prime[j]]=true;
                if(i%prime[j]==0) break;
            }
        }
    }
    int main()
    {
        oulasai(10000000);
        ll n;
        int i,index=0;
        scanf("%lld",&n);
        for(i=0;i<x;i++)
        {
            while(n%prime[i]==0)
            {
                a[index++]=prime[i];
                n/=prime[i];
            }
            if(n==1)
                break;
        }
        if(n!=1) a[index++]=n;
        for(i=0;i<index;i++)
        {
            if(i) printf(" ");
            printf("%d",a[i]);
        }
        printf("
    ");
        return 0;
    }
    

    n!=1,说明n是一个非常大的素数。不然欧拉筛可以筛掉

  • 相关阅读:
    System.arraycopy用法
    Springmvc Get请求Tomcat、WebLogic中文乱码问题
    Rails内存的问题 Java内存情况
    Java 执行系统命令
    搭建Cocos2d-JS开发环境
    xcode 6 改动组织及开发人员
    poj
    hdu 4869 Turn the pokers (思维)
    【剑指offer】扑克牌的顺子
    NYOJ 480 Fibonacci Again!
  • 原文地址:https://www.cnblogs.com/skyleafcoder/p/12319566.html
Copyright © 2011-2022 走看看