质数:质数是大于1的,且不能用小于它的两个正整数乘积表示。

首先求1-n中质数的个数

def getnum(self,n:int) ->int:
        num=0
        for i in range(2,n+1):
            flag=True
            for j in range(2,int(i**0.5)+1):
                if i%j==0:
                    flag=False
                    break
            if flag==True:
                num+=1
        return num

总的方案数就是质数排列数和非质数排列数的乘积

    def jiecheng(self,n:int) ->int:
        sums=1
        for i in range(1,n+1):
            sums*=i
        return sums%1000000007
    def numPrimeArrangements(self, n: int) -> int:
        if n==1 or n==2:
            return 1
        count=self.getnum(n)
        #调用类中的函数要使用self.
        num=self.jiecheng(count)*self.jiecheng(n-count)
        return num%1000000007


LeetCode      数论

本博客所有文章除特别声明外,均采用 CC BY-SA 3.0协议 。转载请注明出处!