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

消耗时间和内存情况:

相关推荐
Black蜡笔小新6 分钟前
自动化AI算法训练服务器DLTM零代码私有化一站式AI训练平台技术解析
人工智能·算法·自动化
奥利奥夹心脆芙15 分钟前
OTel / Logstash / Fluentd 全维对比,及统一日志与指标管道的 AWS ECS 落地
javascript
Mumu121824 分钟前
P3212 [HNOI2011] 任务调度
算法
KWTXX31 分钟前
vibe coding-提示词
java·前端·算法
zithern_juejin31 分钟前
手写函数组合compose
javascript
rime_neko33 分钟前
js学习笔记
开发语言·前端·javascript
情多多7734 分钟前
OpenClaw.NET 外部 CLI 预设系统:从零编写第三方 CLI 集成指南
javascript
越努力越幸运6639 分钟前
Solon Flow 实战:用 50 行 YAML 实现一个请假审批流
javascript
八解毒剂1 小时前
查找-从二分查找到二叉排序树
数据结构·c++·算法
程序猿追1 小时前
画个饼,给数据点颜色看看——在 HarmonyOS 模拟器上手搓一个饼图/环形图组件
深度学习·算法·harmonyos