EXCEL中怎样判断某单元格数值是否是质数
1个回答
展开全部
根据质数的定义,在判断一个数n是否是质数时,我们只要用1至n-1去除n,看看能否整除即可。但我们有更好的办法。先找一个数m,使m的平方大于n,再用<=m的质数去除n,如果都不能整除,则n必然是质数。如我们要判断1993是不是质数,50*50>1993,那么我们只要用1993去除<50的质数就可以了。100以内的质数有25个,还是比较好记的,我们只要记熟100以内质数,就可以快速判断10000以内的数是不是质数了。
例如数据在F列,结果在E列
先来个VBA的
Sub 判断质数()
Dim i&, k&, x&
Dim arr, arr1
arr = Range("F1:F" & Range("F65536").End(xlUp).Row)
ReDim arr1(1 To UBound(arr))
For y = 1 To UBound(arr)
i1 = arr(y, 1)
i = Int(Sqr(i1)) + 1
If i1 > 1 And i1 < 4 Then
arr1(y) = "质数"
ElseIf i1 > 3 Then
For x = 2 To i
If i1 Mod x = 0 Then
arr1(y) = "合数"
GoTo Tao1
End If
Next x
arr1(y) = "质数"
ElseIf i1 < 2 Then
arr1(y) = "非质非合"
End If
Tao1:
Next y
Range("G1").Resize(UBound(arr1), 1) = Application.Transpose(arr1)
End Sub
公式:
=IF(AND(F1>=2,F1=INT(F1)),IF(SUM(--(MOD(F1,ROW(INDIRECT("1:"&INT(SQRT(F1)))))=0))>1,"合数","质数"),"非质非合")按ctrl+shift+回车数组公式 ,公式下拉
例如数据在F列,结果在E列
先来个VBA的
Sub 判断质数()
Dim i&, k&, x&
Dim arr, arr1
arr = Range("F1:F" & Range("F65536").End(xlUp).Row)
ReDim arr1(1 To UBound(arr))
For y = 1 To UBound(arr)
i1 = arr(y, 1)
i = Int(Sqr(i1)) + 1
If i1 > 1 And i1 < 4 Then
arr1(y) = "质数"
ElseIf i1 > 3 Then
For x = 2 To i
If i1 Mod x = 0 Then
arr1(y) = "合数"
GoTo Tao1
End If
Next x
arr1(y) = "质数"
ElseIf i1 < 2 Then
arr1(y) = "非质非合"
End If
Tao1:
Next y
Range("G1").Resize(UBound(arr1), 1) = Application.Transpose(arr1)
End Sub
公式:
=IF(AND(F1>=2,F1=INT(F1)),IF(SUM(--(MOD(F1,ROW(INDIRECT("1:"&INT(SQRT(F1)))))=0))>1,"合数","质数"),"非质非合")按ctrl+shift+回车数组公式 ,公式下拉
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询