LeetCode.1175-质数排列(Prime Arrangements)

LeetCode --- 1175. Prime Arrangements 解题报告 Return the number of permutations of 1 tonso that prime numbers are at prime indices (1-indexed.) (Recall that an integeris prime if and only if it is greater than 1, and cannot be written as a product of two positive integersboth smaller than it.) S... 阅读详情

这是小川的第413次更新,第446篇原创

看题和准备

今天介绍的是LeetCode算法题中Easy级别的第264题(顺位题号是1175)。返回1到n的排列数,以使质数处于质数索引(索引从1开始)。(请记住,当且仅当整数大于1,并且不能将其写为两个均小于它的正整数的乘积,它才是质数。)由于答案可能很大,因此请以10^9 + 7为模返回答案。

例如:

输入:n = 5
输出:12
说明:[1,2,5,4,3]是有效的排列,但是[5,2,3,4,1]并不是,因为素数5在索引1处。

输入:n = 100
输出:682289015

注意:

  • 1 <= n <= 100

解题

题目的意思是计算一个由1到n组成的数列中,质数恰好位于质数索引上的排列组合个数,本质上是一个数学问题。

结合n = 5的例子来看,1到5中,只有2,3,5是质数,1和4不是质数,因此排列质数就有3*2*1 = 6种可能,分别是:

[2,3,5],[2,5,3],[3,2,5],[3,5,2],[5,2,3],[5,3,2]

不是质数的1和4,只有两种可能,分别是

[1,4],[4,1]

因此,将质数和非质数组合起来,就是6*2 = 12种可能,分别是

[1,2,3,4,5],[1,2,5,4,3],[1,3,2,4,5],[1,3,5,4,2],[1,5,2,4,3],[1,5,3,4,2]
[4,2,3,1,5],[4,2,5,1,3],[4,3,2,1,5],[4,3,5,1,2],[4,5,2,1,3],[4,5,3,1,2]

因此,我们只需要计算出n中有多少个质数和非质数,再计算两者的阶乘即可,为了防止溢出,题目要求我们将计算结果对1000000007取余。

public int numPrimeArrangements(int n) {
    int mod = 1000000007;
    int primeNums = countPrime(n);
    int nonPrimeNums = n - primeNums;
    long result = 1;
    for (int i=2; i<=primeNums; i++) {
        result = (result*i)%mod;
    }
    for (int j=2; j<=nonPrimeNums; j++) {
        result = (result*j)%mod;
    }
    return (int)result;
}

/**
 * 计算1到n中,质数(只能被1和自身整除)的个数
 * @param n
 * @return
 */
public int countPrime(int n) {
    if (n <= 1) {
        return 0;
    }
    int count = 0;
    for (int i = 2; i <= n; i++) {
        boolean flag = true;
        for (int j = 2; j <= Math.sqrt(i); j++) {
            if (i % j == 0) {
                flag = false;
                break;
            }
        }
        if (flag) {
            count++;
        }
    }
    return count;
}

小结

算法专题目前已更新LeetCode算法题文章270+篇,公众号对话框回复【数据结构与算法】、【算法】、【数据结构】中的任一关键词,获取系列文章合集。

以上就是全部内容,如果大家有什么好的解法思路、建议或者其他问题,可以下方留言交流,点赞、留言、转发就是对我最大的回报和支持!

PrimeTransformationStream:素数的素数索引集变换 PrimeTransformationStream 素数的素数索引集变换 项目目标 使用一个(大)质数流,并在该流上生成“k”个集合转换,将每个转换后的集合保存到一个压缩文件中。 大量的素数是 1 到 10^^15 之间所有素数的数量级。 集合转换是通过读取两个输入源(例如流)并产生一个输出流(高阶集合)来执行的。 第一个输入流是素数集。 第二个流是要转换的数字集(低阶集)。 如果元素的集合索引是素数(因此每个转换都需要第一个输入流),则来自低阶集合的成员将被提升到高阶集合。 当前状态 部分完成。 转换正在使用两个输入流的输入文件进行工作。 SetTransformation 已被证明适用于具有 10^^13 个元素的 Set K=0。 在 AWS r3.xlarge 上运行时间为 12 小时。 完整的流输入开发正在进行中。 用法 nohup primesieve <元素数量(例如 立即下载

相关推荐

Abaqus中使用Python提取裂缝数据并用matplotlib库绘图

ABAQUS后处理PYTHON二次开发代码:提取裂缝数据并用matplotlib库绘图

qq_42568527的博客 3473

一举拿下质数—质数专题

质数从入门到关门

qq_44382590的博客 7391

OpenHarness代码解读

Harness 是包裹在大模型之外、为其赋予完整执行能力的全套基础设施。模型负责提供智能与推理,Harness 则为模型提供感知、行动、记忆、工具与安全约束,使其从语言模型变成可自主完成复杂任务的实用智能体。我这里把向量数据库方案定义为:把对话片段、事件、偏好、工具结果等切成 memory chunks,做 embedding,存进向量库,查询时靠 ANN 相似度召回,再交给 LLM 读。AAAI 的综述类论文就明确指出,很多 LLM agent 的长期记忆就是这么做的。AAAI 期刊把文件系统方案。

qq_52053775的博客 188

质数排列方案

质数排列

weixin_67257738的博客 299

基于Simulink的超级电容快速响应特性建模与仿真

本文介绍了基于Simulink的超级电容快速响应特性建模与仿真方法。主要内容包括:超级电容的工作原理、一阶RC等效电路模型及其动态电压方程;通过Simulink搭建超级电容模型的两种方法(Simscape Electrical推荐方案和基础模块透明教学方案);仿真100A×100ms放电脉冲下的电压响应特性,并与锂电池进行动态对比;分析超级电容在混合储能系统中的功率分配优势。文章还提供了工程实践要点和扩展方向,如电压均衡、温度影响评估以及与DC-DC变换器集成等。通过建模实践,验证了超级电容在毫秒级响应、高

xiaoheshang_123的博客 99

YOLOv8 模型进化全解析:百种创新模块集成方法与实战部署指南(附资料链接)

动态网络 | DeformableConv/DynamicHead| +2.8% || 轻量化卷积 | GhostConv/MobileConv | +1.2% || 多尺度融合 | AFPN/ASFF | +3.5% || 注意力机制 | CA/EMA/SimAM | +1.8-4.2% |

FJN110的博客 111

python-leetcode-1175. 质数排列

非质数必须放在 n−p 个非质数索引的位置,因此它们的排列方案为 (n-p)!我们使用 Python 计算这个结果,并利用快速阶乘计算和取模运算加速计算。质数必须放在 p 个特定的位置,因此它们的排列方案为 p!确保这些质数必须放在质数索引位置上,而其他非质数必须放在剩余的位置。这个代码首先使用埃氏筛法计算 n 以内的质数个数 p,然后计算。找出 1 到 n 之间的所有质数,并确定它们的个数 p。使用「埃氏筛法」找到 1 到 n 之间的所有质数。统计质数的个数 p,非质数的个数为 n−p。

Lucy_wzw的博客 523

StarRocks 面试题及参考答案详解(万字详解)

Broker Load的过程通常涉及到数据的解析、转换和加载,它支持多种数据格式,并且可以处理复杂的数据导入任务。一方面,压缩可以减少磁盘I/O操作,因为压缩后的数据占用的空间更小,需要读取的数据块数量也就更少。在StarRocks中,表数据可以被划分成多个分区,每个分区包含表的一部分数据。在传统的行存储模型中,数据是按行组织的,这意味着在执行分析查询时,系统需要读取并处理整行数据,即使很多时候只需要查询其中的少数几列。物化视图的更新可以是完全重算,也可以是增量更新,取决于物化视图的定义和数据变更的模式。

大模型大数据攻城狮的专栏 2084

C++实现质数(素数)的判断

可以将这段代码作为母版,可以延申出很多csp试题,正所谓万变不离其宗嘛!

热爱编程的Jack的博客 4518

JavaFx 教程

JavaFx 教程

2012年开始工作,全栈开发老兵,目前已是一个老师,分享这么多年的心得体会 785

R语言LASSO回归作图为什么X轴使用-log(λ)而不是log(λ),如何转化为log(λ)?

🏆本文收录于 《全栈Bug调优(实战版)》 专栏,该专栏专注于分享我在真实项目开发中遇到的各类疑难Bug及其深层成因,并系统提供高效、可复现的解决思路和实操方案。无论你是刚入行的新手开发者,还是拥有多年项目经验的资深工程师,本专栏都将为你提供一条系统化、高质量的问题排查与优化路径,助力你加速成长,攻克技术壁垒,迈向技术价值最大化与职业发展的更高峰🚀!

**My Coding Family** 1021

1175.质数排列【力扣】

题意理解 将1-n中的质数按质数位置排序,求满足条件的排列总数,结果对10^9+7取模。 问题分析 方法不难,坑多。 坑1:10^9+7 不能直接写10e9+7,写成1000000007才对。 坑2:取模运算,结果保留为unsigned long long,每次对中间结果取模在运算即可。 坑3:计算判断质数方法,只需要遍历n/2的长度,同时包含n/2的值。 坑4:题意只说了质数的要求...

xiexie1357的专栏 548

Briefings in Bioinformatics投稿经验分享

Briefings in Bioinformatics投稿经验分享

LiRongLu_的博客 3342

LeetCode - 1175 - 质数排列(prime-arrangements)

一 目录 不折腾的前端,和咸鱼有什么区别目录一 目录二 前言三 解题二 前言 难度:简单涉及知识:数学题目地址:https://leetcode-cn....

weixin_41806099的博客 242

最新的sdio 4.0 spec 协议标准 带书签 高清完整PDF版

Part-E1-SDIO-Specification-Ver4.00-Final-120220.pdf:最新的sdio 4.0 spec 协议标准 带书签 高清完整PDF版,包括SDIO 接口的外设,SDIO 接口官方协议等。

老版QQ原生表情gif动态

这是老版的QQ表情,不过全是动态的的,Windows照片查看器是不会动的,可以右击用浏览器打开查看,再说一遍是老版的,只是分享给宁愿用老版也要动态的人。

LeetCode 1175. Prime Arrangements(质数排列)解法

题目描述 中文:质数排列 英语:Prime Arrangements 解题思路 理解题意,是要求1到n的排列组合数,但并不是全排列,而是1到n中所有质数个数的阶乘和非质数个数的阶乘的乘积并对10^9 + 7即1000000007取模运算的结果。 以n=5为例,1到5中有2、3、5共3个质数,非质数则有1、4共2个,则结果为(3! * 2!) % 1000000007 = 12 代码如下 需要理解的...

xst_3300 770

android 蓝牙通讯demo

android 下蓝牙通讯demo,实现了发现蓝牙,使能蓝牙,通过蓝牙发送消息。

LeetCode1175. 质数排列Prime Arrangements

LeetCode1175. 质数排列Prime Arrangements

JalanChao的博客 293

leetcode 1175. prime-arrangements 质数排列-耗时100

Problem:耗时100%,质数只能在质数索引,所以质数之间排列总数 * 合数和1之间排列总数,就是答案的,若存在m个质数,则答案是m!∗n−m。

邹九的个人博客 86

LeetCode-Go 题解 1175:Prime Arrangements 质数排列的组合计数与打表法实现

LeetCode 1175 要求为从 1 到 n 的整数设计排列方案,使得所有质数恰好落在质数索引(1-indexed)上,并返回方案总数对 `10^9 + 7` 取模的结果。本文以 [leetcode/1175.Prime-Arrangements/README.md](https://link.gitcode.com/i/129fe6a2c2e97fc197e4a7f0b65afb7e) 为骨

gitblog_01190的博客 4

[leetcode] 1175. Prime Arrangements

Description Return the number of permutations of 1 to n so that prime numbers are at prime indices (1-indexed.) (Recall that an integer is prime if and only if it is greater than 1, and cannot be written as a product of two positive integers both smaller t

Learning from the mistakes 177

leetcode 1175. Prime Arrangements 解法 python

一.问题描述 Return the number of permutations of 1 tonso that prime numbers are at prime indices (1-indexed.) (Recall that an integeris prime if and only if it is greater than 1, and cannot be written...

CSerwangjun的博客 623

1175.质数排列(JS)——leetCode

解释:举个例子,[1,2,5,4,3] 是一个有效的排列,但 [5,2,3,4,1] 不是,因为在第二种情况里质数 5 被错误地放在索引为 1 的位置上。请你帮忙给从 1 到 n 的数设计排列方案,使得所有的「质数」都应该被放在「质数索引」(索引从 1 开始)上;链接:https://leetcode-cn.com/problems/prime-arrangements。让我们一起来回顾一下「质数」:质数一定是大于 1 的,并且不能用两个小于它的正整数的乘积来表示。🟢 前端0到1【持续更新】→。

zhang1339435196的博客 588

leetcode 1175. Prime Arrangements(python)

描述 Return the number of permutations of 1 to n so that prime numbers are at prime indices (1-indexed.) (Recall that an integer is prime if and only if it is greater than 1, and cannot be written as a product of two positive integers both smaller than it.)

王大呀呀的博客 405

Leetcode-1175.Prime Arrangements

Prime 质数判断+组合数学

Eistert 227

#力扣LeetCode1175. 质数排列 @FDDLC

题目描述: https://leetcode-cn.com/problems/prime-arrangements/ Java代码: class Solution { public int isPrime(int n){ //n>=3,且为奇数(不考虑偶数) for(int i=3,sqrt=(int)Math.sqrt(n);i<=sqrt;i+=2)if(n%i==0)return 0; return 1; } publi.

LiuXingchang的博客 316

LeetCode //C - 1175. Prime Arrangements

Summary: The problem requires counting the number of permutations of numbers from 1 to ( n ) such that prime numbers occupy prime-indexed positions (1-indexed). The solution involves: Counting primes up to ( n ) using trial division. Calculating permutatio

Made in Code 210

力扣解法汇总1175-质数排列

力扣解法汇总1175-质数排列

分享+记录 477
上一篇: LeetCode.1170-比较字符串中最小字符的出现频率(Compare Strings by Frequency of the Smallest Char)
下一篇: LeetCode.1184-公交车站之间的距离(Distance Between Bus Stops)
程序员小川
博客等级 码龄10年 47粉丝 305原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值