LintCode 1295: Prime Factor Statistics (质因数分解经典题)

Leetcode 1295:统计位数为偶数的数字(超详细的解法!!!) 给你一个整数数组 nums,请你返回其中位数为 偶数 的数字的个数。 示例 1: 输入:nums = [12,345,2,6,7896] 输出:2 解释: 12 是 2 位数字(位数为偶数) 345 是 3 位数字(位数为奇数) 2 是 1 位数字(位数为奇数) 6 是 1 位数字 位数为奇数) 7896 是 4 位数字(位数为偶数) 因此只有 12 和 7896 是位数为偶数的数字... 阅读详情

1295. Prime Factor Statistics

 

Given a positive integer N, you need to factorize all integers between (1, N].

Then you have to count the number of the total prime numbers.

 

Example

input:6

output:7

explain:2=2, 3=3, 4=2*2, 5=5, 6=2*3, the number of prime number : 1+1+2+1+2=7

Notice

1<N<=100000


解法1:DP。总时间复杂度是O(n * sqrt(n))。

class Solution {
public:
    /**
     * @param N: a number
     * @return: the number of prime numbers.
     */
    int Count_PrimeNum(int N) {
        int result = 0;
        vector<int> prime(N + 1, 1); prime[0] = 0; prime[1] = 0;
        vector<bool> visited(N + 1, false);
        for (int i = 2; i <= N; ++i) {
            result += prime[i];
            for (int j = 2; i * j <= N && j <= i; ++j) {
                if (!visited[i * j]) {
                    visited[i * j] = 1;
                    prime[i * j] = prime[i] + prime[j];
                }
            }       
        }
        
        return result;
    }
};

二刷,不需要visited数组。

class Solution {
public:
    /**
     * @param N: a number
     * @return: the number of prime numbers.
     */
    int Count_PrimeNum(int N) {
        int result = 0;
        vector<int> records(N + 1, 1);
        records[0] = 0, records[1] = 0;
        for (int i = 2; i <= N; ++i) {
            result += records[i];
                int count = N / i;
                for (int j = 1; j <= count; ++j) {
                    records[i * j] = records[i] + records[j];
                }
        }
        
        return result;
    }
};

 

解法2:基于Pollard_Rho算法。因为Pollard_Rho算法时间复杂度O(n^ 1/4),所以总的时间复杂度是O(n^ 5/4)。

class Solution {
public:
    /**
     * @param N: a number
     * @return: the number of prime numbers.
     */
    int Count_PrimeNum(int N) {
        int result = 0;
        vector<int> nums(N + 1, -1);
    
        for (int i = 2; i <= N; ++i) {
            result += Pollard_Rho(i);
        } 
        return result;
    }
    
private:
    int Pollard_Rho(int n) {
        int count = 0;
        //vector<int> result;
        int sqrtn = sqrt(n);
        for (int i = 2; i <= sqrtn;) {
            while (n % i == 0) {
                count++;
             //   result.push_back(i);
                n /= i;
            }
            
            if (i == 2) i += 1;
            else i += 2;
        }
      //  if (count == 0) count = 1;  // if n is non-2 prime
        if (n > 1) count++;
        return count;
    }
};

 

JAVA:实现PrimeFactorization质因数分解算法(附完整源码) 阅读详情

相关推荐

Python库 | advent_of_code-2019.12.95-cp38-cp38-win_amd64.whl

资源分类:Python库 所属语言:Python 资源全名:advent_of_code-2019.12.95-cp38-cp38-win_amd64.whl 资源来源:官方 安装方法:https://lanzao.blog.youkuaiyun.com/article/details/101784059

关于素数的算法小结

1. 判断一个数是不是素数 解法1:最经典的版本 1 #include <stdio.h> 2 #include <math.h> 3 #include <stdbool.h> //C99 supports bool type 4 5 bool is_prime(int n) { 6 if (n <= 3) return n > 1; 7 int sqrt_n = sqrt(n); 8 9

roufoo的博客 447

YOLOv11多模态融合实战:基于YOLOFuse的RGB与红外线(IR)协同检测技术解析

本文深入解析了YOLOv11多模态融合技术,重点介绍基于YOLOFuse框架的RGB与红外线(IR)协同检测方法。通过动态权重分配、跨模态特征对齐等创新设计,实现在低光照等复杂环境下的高精度目标检测,mAP提升高达37%。文章包含实战案例、训练技巧和部署方案,为计算机视觉开发者提供完整的多模态融合解决方案。

weixin_29038345的博客 292

[leetcode] 质因数分解

第一次参加周赛,遇到了质因数分解…

weixin_43742643的博客 1004

【顾邦小讲堂】第十九期 RC Snubber吸收电路详解:抑制MOSFET振铃现象与过冲的设计技巧!

通过RC Snubber电路有效抑制MOSFET DS端的过冲及振铃现象,帮助工程师们在设计中提升电路的稳定性和可靠性

GBupupup的博客 3789

换频道——假想《道德经》与量子力学的一些联系

之前看到一位AI PM的前辈分享了自己对于PM境界的看法: 境界一,行事被放心。 境界二,独立主导产品线从0到1,做正确的事,并把事做正确。 境界三,一切以灵魂境界为基础,产品作为其理念的衍生。 对于我,3个月尝试于目标而无获,但塞翁失马焉知非福。自己已经具备境界一,虽然境界二尚未成熟,但境界三却有幸有所思考。 今天,往澳门的动车途中有感而发,为随笔。

1020

(笔试题)质数因子Prime Factor

题目: Given any positive integer N, you are supposed to find all of its prime factors, and write them in the format N = p1^k1 * p2^k2 *...*pm^km.  输入描述: Each input file contains one test case which g...

weixin_34129696的博客 316

FreeCAD MCP实战:用AI自然语言驱动CAD建模与自动化

在计算机辅助设计(CAD)领域,参数化建模和自动化脚本是提升设计效率的核心技术。其原理在于通过程序化指令控制三维模型的创建与修改,从而将设计意图转化为精确的几何实体。这种技术价值在于显著降低重复性操作成本,实现快速原型迭代和设计探索。在应用场景上,它尤其适用于需要频繁调整尺寸、生成系列化零件或执行规则化建模任务的工程与产品设计。本文聚焦的FreeCAD MCP项目,正是这一理念的先进实践。它通过集成Model Context Protocol(MCP),构建了一个连接Claude AI与FreeCAD的智能

weixin_26913055的博客 724

[分解质因数+DP] LeetCode 1551.切分数组

题目描述 给定一个整数数组,将切分成若干个非空子数组,使得每个子数组最左边的数和最右边的数的最大公约数大于1。求出最少可以切成多少个子数组。 1<=nums.length<=1051 <= nums.length <= 10^51<=nums.length<=105 2<=nums[i]<=1062 <= nums[i] <= 10^62<=nums[i]<=106 思路 记f[i]f[i]f[i]为前iii个数最少切成的数组个数,那么

Coach-XP的博客 867

ENVI哨兵一号数据处理

使用ENVI+SarScape处理哨兵数据

Rjjjjj11的博客 2万+

msf后渗透之获取登入password、远程控制、调用摄像头

在terminal输入load kili creds_all直接获取密码(不一定成功) 使用kiwi_cmd sekurlsa::logonpasswords获取密码

m0_61506558的博客 2964

「数学::数论」分解质因子 / LeetCode 2521(C++)

由算数基本定理,我们知道任意一个大于1的自然数可以表示为一些质数的乘积,该怎么用算法描述呢?

dakingffo的博客 1493

HQChart实战教程64-自定义分时图标题栏

分时图标题栏显示的是当前十字光标所在位置的分钟信息,显示在分时图窗口顶部。一般会显示品种的名称,日期,时间,价格,均价 涨幅,成交量,金额等等,hqchart内置会显示这些信息。如果要额外显示其他的字段,就需要通过替换格式化标题输出函数来是现实。我们在hqchart实例创建完成以后,通过OnCreatedCallback回调函数替换自己的格式化输出函数。返回 { AryText:[ { Text:文字, Color:颜色},…入参 data={ Data: 当前十字光标所在位置的分钟线 }

小银 1056

leetcode数论(2521. 数组乘积中的不同质因数数目)-质因素分解

经过前期的基础训练以及部分实战练习,粗略掌握了各种题型的解题思路。现阶段开始专项练习。

磐门的博客 720

微信开发 - 最新第三方网站接入微信登录、微信支付时,本地 redirect_uri 参数错误导致无法调试的解决方案(微信开放平台)完美解决每次都需要部署到线上测试,在本地使用本地 ip 就能轻松调试

redirect_uri参数错误,微信第三方登录,没有服务器时的测试方法,微信开放平台的回调域名怎么设置为本地域名IP,微信登录微信支付每次调试都需要放到服务器上怎么办,微信登录支付业务在本地调试不了怎么办,在本地怎么测试微信支付和登录,微信第三方登陆本地测试,怎么在本地进行测试,微信回调域怎么设置为本地IP,微信扫码登录redirect_uri参数错误,微信开放平台,微信开放平台开发的第三方登录和支付,vue2,nuxt2,vue3,nuxt3,uniapp,微信开放平台,公众号,微信支付,微信登录授权,

🏆 前端领域优质创作者 8791

Camera2Demo

在Camera2 的基础上进行封装,使得Camera2一堆初始化逻辑与Activity分离,降低耦合度,完成预览拍照并保存的操作

204. Count Primes

Description: Count the number of prime numbers less than a non-negative number,n. Credits:Special thanks to@mithmattfor adding this problem and creating all test cases. Hint: Let'...

weixin_30346033的博客 242

jre9下载 jdk9

(Java SE Runtime Environment 9.0) 9.0u175 官方最新版 【x86|x64】

[leetcode]分解质因数

/ 递归分解剩余部分。i++) { // 修正循环条件。// 找到一个因数后返回。

qq_74776071的博客 542

pscad IEEE标准系统搭建说明

pscad IEEE标准系统搭建说明,包含典型的IEEE 9节点、14节点、30节点、39节点和118节点系统。内含标准测试系统的原始数据和潮流结果。

VC中sqlite的使用

在VC中对sqlite的使用,实现数据库大批数据的快速插入,读取数据库中的数据在ListCtrl中显示

领扣LintCode算法问题答案-1295. 质因数统计

领扣LintCode算法问题答案-1295. 质因数统计 目录1295. 质因数统计描述样例 1:题解鸣谢 1295. 质因数统计 描述 题目给定一个正整数N,你需要统计(1,N]之间所有整数质数分解后,所有质数的总个数。 1<N<=100000 样例 1: 输入:6 输出:7 解释:2=2, 3=3, 4=2*2, 5=5, 6=2*3, 个数和为1+1+2+1+2=7 题解 public class Solution { /** * @param N: a num.

二当家的白帽子 816

Leetcode 刷题必须Review 十三 Lintcode(479 235 1781 1784 958)

文章目录479 · 数组第二大数235 · 分解质因数1781 · 反转ASCII编码字符串1784 · 减小为回文958 · 回文数据流 479 · 数组第二大数 在数组中找到第二大的数。 def secondMax(self, nums): # write your code here nums.sort() return nums[-2] 官方答案,打擂台: def secondMax(self, nums): # write you

爱学习的大叔的博客 704

numOfprime java,Java显示数字的Prime Factorization

So for my assignment, I have to write a program that asks the user for an integer input and then print out that number's prime factorization.This is what I have:import java.util.Scanner;public class P...

weixin_39527372的博客 187

LeetCode 1295. 统计位数为偶数的数字

Table of Contents 中文版: 英文版: My answer: 解题报告: 中文版: 给你一个整数数组nums,请你返回其中位数为偶数的数字的个数。 示例 1: 输入:nums = [12,345,2,6,7896] 输出:2 解释: 12 是 2 位数字(位数为偶数) 345 是 3 位数字(位数为奇数) 2 是 1 位数字(位数为奇数) 6 是...

三妹的博客 596

《C++面向对象程序设计》第八章

6-1 筛法求质数 (15 分) 本题要求使用筛法求出1~N以内的质数。 函数接口定义: vector sieve(int n); //函数声明, 求n以内的质数 求n以内的质数。其中 n是传入的参数。n 的值不超过10 000 000的范围; 求出的质数存入容器vector并返回。 裁判测试程序样例: #include #include using namespace std; vector...

qq_43595006的博客 2437

CODE[VS] 1295 N皇后问题

题目描述Description 在n×n格的棋盘上放置彼此不受攻击的n个皇后。按照国际象棋的规则,皇后可以攻击与之处在同一行或同一列或同一斜线上的棋子。n后问题等价于再n×n的棋盘上放置n个皇后,任何2个皇后不妨在同一行或同一列或同一斜线上。 输入描述Input Description 给定棋盘的大小n (n ≤ 13) ...

261

分解质因数 与 找出第几个丑数(leetcode与牛客网)

一、分解质因数 1质数:除了1和它本身以外不再有其他因数的自然数。 2.质因数分解:可以写成几个质数相乘的形式,如30=2×3×5 3.代码实现: 3.1 如果val不是质数,说明可以因式分解 3.2如果i不是质数,就i++直到找到 3.3/找到之后 判断是否能被val整除 不行的话 只能找下一个质数 int val = 90; int i = 2; std::vector<int> Arr; while (!prime(val)) { while (!prime..

qq_20585527的博客 1014

Codevs 1295 N皇后问题

Codevs 1295

Byike的博客 709

质数筛选--快速筛选出小于等于N的质数

Eratosthenes筛法(O(nlog^logn) )此方法非常的简单: 1. 维护一个数组vector<bool> prime(n + 1, true)既让数组中的所有数都为真,表明它是质数。 2. 对于每一个质数,删除它的倍数,因为质数的倍数一定是合数。让后将数组中对应的数改为false,这样就可以避免遍历他。代码如下:int findPrime(int n) { vector<

yqtao的博客 4029
上一篇: LintCode 1587: String Segmentation
下一篇: LintCode 1329: Sequence maintenance (线段树和树状数组区间更新和区间查询,经典难题!!!)
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值