欢迎光临散文网 会员登陆 & 注册

desmos基于单表达式的质数判断

2023-07-18 13:22 作者:该名称已被占用99  | 我要投稿

本文主要为介绍思路与结果,不喜勿喷,欢迎讨论。本文中的变量n∈ℕ(包括0).

思路过程:

质数即仅有两个正整因数的正整数,那么一个正数除以一个非其正整因数的数,结果一定不属于整数. 在desmos中,一个数除以一个列表,等于一个由这个数分别除以列表中的数结果的列表(例如10/[1, 2, 5, 10]=[10, 5, 2, 1]),我们得到如下式子:

显然,当n=0时,式2=n/[1...n]=0/[1, 0],进而使列表中出现了无效数字0/0。若我们将[1...n]中的n在n=0时变为n+1,我们的推论依然可以进行. 在此介绍一种方法: 首先我们引入一个函数

sign

,作用如下: ⌠ x<0,输出-1 sign(x) ⎮ x =0,输出0 ⌡ x>0,输出1 借此,我们把0与其他数分为两类,再进行操作,使得所构建的式子在n=0时为1,其它情况为0。过程如下: n=0 sign(n)=0 m≠0 sign(m)∈{-1, 1} ⎮sign(n)⎮=0 ⎮sign(m)⎮=1 ⎮sign(⎮sign(n)⎮-1)⎮=1 ⎮sign(⎮sign(m)⎮-1)⎮=0 即令f(x)=⎮sign(⎮sign(x)⎮-1)⎮. x=0时f(x)=1,x≠0时f(x)=0。由此得到下式:

可见问题已解决。回到最初,我们的目标是判断列表中的数是否为n的因数,即列表中的数是否可以整除n,显然若可整除,列表中对应数为整数,否则为小数。下面展示一种判断方式(round(x)为取整函数,即四舍五入x). a为整数,b不为整数. round(a)=a round(b)≠b round(a)-a=0 round(b)-b≠0 ⎮sign(round(a)-a)⎮=0 ⎮sign(round(b)-b)⎮=1 ⎮⎮sign(round(a)-a)⎮-1⎮=1 ⎮⎮sign(round(b)-b)⎮-1⎮=0 即令f(x)=⎮⎮sign(round(x)-x)⎮-1⎮. x为整数则f(x)=1,x不为整数则f(x)=0. 令a=f(n/[1...n+(⎮sign(⎮sign(n)⎮-1)⎮)]). 则∀a中元素,其∈{0, 1}。我们统计n的正整因数,即统计a中共有多少个1, 由于非统计元 均为0求和后不影响总量,所以 a中1的个数=∑(i=1,length(a))a[i] (length(a)表示a共有多少元素,a[i]表示a中第i个元素),如下图(n=10的情况):

结果:

同样使用sign函数,判断上述求和式的结果是否为2即可,完整的desmos式表达式(求和部分需手动输入):sum(i=1, length(⎮⎮sign(round(n/[1...n+(sign(⎮sign(n)⎮-1)⎮)])-n/[1...n+(sign(⎮sign(n)⎮-1)⎮)])⎮-1⎮))⎮⎮sign(round(n/[1...n+(sign(⎮sign(n)⎮-1)⎮)])-n/[1...n+(sign(⎮sign(n)⎮-1)⎮)])⎮-1⎮[i]. 当n为质数,则上式=0,否则为1.

desmos基于单表达式的质数判断的评论 (共 条)

分享到微博请遵守国家法律