• PE3 Largest prime factor(最大素数因子)


    前言PEProject Eluer)是学Mathematica(以后我简称Mma)接触到的,不用提交代码,只用提交答案的答题网站。PE的题目会给出C++Mma代码实现,以此学习Mma(已经被它的简洁给折服了..)。

     

    题目

    The prime factors of 13195 are 5, 7, 13 and 29.What is the largest prime factor of the number 600851475143 ?

    https://projecteuler.net/problem=3

    分析

    题目求由数的因式分解,求因式中最大值。

    看到prime,就往素数方面去想了,思路是,把N用一个素数p去除,缩小N,p等于下一个素数,循环,直到N缩小到1为止

    Code

     

    #include<iostream>

     

    using namespace std;

    int nextPrime(int n);

    bool isPrime(int n);

    int MaxFct(__int64 n);

    int main(){

        __int64    n = 600851475143;

        cout << MaxFct(n);

        return 0;

    }

    int MaxFct(__int64 n){

        int i = 0;

        int maxFct = 1;

        while (n>1)

        {

           i = nextPrime(i);

           if (n%i == 0){

               n /= i;

               maxFct = i > maxFct ? i : maxFct;

           }

     

        }

        return maxFct;

    }

    int nextPrime(int n)

    {

        n++;

        while (!isPrime(n))

           n++;

        return n;

    }

    bool isPrime(int n){

        int a = sqrt(n);

        bool isP = true;

        if (n < 2){

           return false;

        }

        int t;

        for (int i = 2; i <= a; i++)

        {

           t = (n % i);

           if ((n % i) == 0){

               isP = false;

               break;

           }

        }

        return isP;

    }

     

    Mathematica  

    FactorInteger[600851475143] // Flatten // Max

  • 相关阅读:
    浅谈Chrome V8引擎中的垃圾回收机制
    selenium反爬机制
    03 HTTP协议与HTTPS协议
    HTTP缓存机制和原理
    python 自动发送邮件
    02 Anaconda的介绍,安装记以及使用
    01 关于jupyter的环境安装
    SQLAlchemy
    django-debug-toolbar
    flask 第十篇 after_request before_request
  • 原文地址:https://www.cnblogs.com/dingblog/p/4500419.html
Copyright © 2020-2023  润新知