每日一题——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;
}

消耗时间和内存情况:

相关推荐
AndrewHZ20 小时前
【GIS数据处理】什么是Cesium?从零入门Web端三维地理可视化工具
javascript·gis·web开发·cesium·gis前端·三维地理可视化
小尧嵌入式20 小时前
QT软件开发知识流程及秒表计时器开发
开发语言·c++·qt·算法
GISer_Jing20 小时前
Next.js 15 全栈开发实战指南
开发语言·javascript·ecmascript
凌康ACG20 小时前
c++使用quickjs执行JavaScript
javascript·c++·quickjs
接着奏乐接着舞20 小时前
react hooks
前端·javascript·react.js
踢球的打工仔20 小时前
前端html(3)
前端·算法·html
程序员-King.20 小时前
day114—同向双指针(数组)—统计得分小于K的子数组数目(LeetCode-2302)
算法·leetcode·双指针
智算菩萨20 小时前
深度学习在教育数据挖掘(EDM)中的方法体系:从任务建模到算法范式的理论梳理与总结
深度学习·算法·数据挖掘
接着奏乐接着舞20 小时前
react redux 分组
前端·javascript·react.js
_OP_CHEN21 小时前
【算法基础篇】(二十七)从记忆化搜索到动态规划:保姆级入门指南,带你吃透 DP 核心思想!
算法·蓝桥杯·动态规划·记忆化搜索·算法竞赛·acm/icpc