每日一题——LeetCode1175.质数排列

方法一 数学规律

其实题目的意思就是1-n里面本来是质数的位置只能放质数,非质数的位置只能放非质数,那么就把质数和非质数的排列分开考虑,假设有x个质数,根据数学的排列规律,那么这么质数的排列方案 数量为x的阶乘,同理非质数的排列为(n-x)的阶乘

所以这道题就是求质数的个数然后求两个阶乘的积

但是要注意对10^9+7取模,且应该是循环求阶乘时对每次循环的结果取模,不能只用最后的阶乘取模

javascript 复制代码
const mod = 1000000007;
var numPrimeArrangements = function(n) {
    var prime=0,res=1
    for(let i=2;i<=n;i++){
        if(isPrime(i)){ 
            prime++
        }
    }
    console.log(prime)
    var composite=n-prime
   while (prime > 0) {
        res = res % mod;
        res *= prime;
        prime--;
    }
    while (composite > 0) {
        res = res % mod;
        res *= composite;
        composite--;
    }
    
   return res
};

function isPrime(n) {
    if (n === 1) {
        return false;
    }
    for (let i = 2; i * i <= n; i++) {
        if (n % i === 0) {
            return false;
        }
    }
    return true;
}

消耗时间和内存情况:

相关推荐
自由与自然4 分钟前
栅格布局常用用法
开发语言·前端·javascript
Violet_YSWY11 分钟前
讲一下ruoyi-vue3的前端项目目录结构
前端·javascript·vue.js
C_心欲无痕15 分钟前
vue3 - toRaw获取响应式对象(如由reactive创建的)的原始对象
前端·javascript·vue.js
小林攻城狮18 分钟前
一个基于 canvas 的 pdf 图片分页切割方法
前端·javascript
OpenTiny社区21 分钟前
2025年OpenTiny年度人气贡献者评选正式开始
前端·javascript·vue.js
JosieBook24 分钟前
【Vue】04 Vue技术——Vue 模板语法详解:插值与指令
前端·javascript·vue.js
贺今宵31 分钟前
el-table-v2element plus+大量数据展示虚拟表格实现自定义排序,选择样式调整行高亮
javascript·vue.js·ecmascript
wljun73939 分钟前
六、OrcaSlicer 切片之区域
算法·切片软件 orcaslicer
2401_8414956444 分钟前
【LeetCode刷题】跳跃游戏Ⅱ
数据结构·python·算法·leetcode·数组·贪心策略·跳跃游戏
leaves falling1 小时前
动态规划讲解
算法·动态规划