'定义一个判断x是否为素数的函数,判断x是否为素数的方法是:如果x不能被从2到Int(Sqr(x))的数整除,那么这个数就是素数
'这里的Prime是一个布尔型变量,只不过没有定义。可以加个Dim prime As Boolean
Public Function prime(x As Integer)
k = Int(Sqr(x) + 0.5)
For i = 2 To k
If x Mod i = 0 Then '如果x能被这其中的一个数整除,x就不是素数
prime = False '所以Prime为假
Exit Function '如果一个数不是素数就退出Function过程
End If
Next
prime = ture '如果x都不能被被从2到Int(Sqr(x))的数整除,那么这个数就是素数,即Prime为真
End Function
问题是:
1、函数名已经为Prime了,变量名怎么还可以是Prime?这样引用函数的时候会出错的,建议把Prime改为IsPrime
2、这个函数不完善,比如2是素数,但引用这个函数判断2的结果是2不是一个素数...给你一个能正确判断一个数是否为素数的代码。
Private Sub Command1_Click()
Dim n%, IsPrime As Boolean
IsPrime = True
n = Val(InputBox("请输入n的值"))
If n = 1 Or (n <>2 And n Mod 2 = 0) Then '1和偶数(除2以外)都不是素数
IsPrime = False
ElseIf n = 2 Then '偶数的特例:2是素数
IsPrime = True
Else '判断奇数是不是素数
k = 3
Do Until k >Sqr(n) Or Not IsPrime
If n Mod k = 0 Then
IsPrime = False
Else
k = k + 2
End If
Loop
End If
Print n &IIf(IsPrime, "是素数", "不是素数")
End Sub
prime的作用就是判断一个数是否为素数(也称“质数”)。
例如:
#include <stdio.h>
int IsPrime(int n)
{
if (n <= 1) return 0
if (n % 2 == 0) return n == 2
for (int i = 3 i += 2)
{
if (i > n/i) break // 等价于 i*i > n, 不用开方
if (n % i == 0) return 0
}
return 1
}
int main()
{
for (int n = 100 n <= 300 n++)
if (IsPrime(n))
printf("%4d", n)
return 0
}
扩展资料:prime算法
prime是以点为基础出发进行检索最小生成树的一种贪心算法。
思想:
将所有的点分成两类,一类是已经放到碗里的,另一类是还没有有放到碗里的,可以通过一个数组bool visit[]来记录这个点到底是属于第一类还是属于第二类之后每一个周期索要进行的 *** 作,找出一一定范围内路径的的范围的最小值。
所有的从第一类点直接连接到第二类点的边将最小的边记录下来(这个也就是生成树中的一条边)将这个新边(这个一个连接第一类点和第二类点的边)连到的那个第二类点归类到第一类点中,之后重复这个 *** 作,最终消灭所有的第二类点。
假设有n个节点,我最初给出一个点,以这个点开始进行搜索,这个时候该点为第一类点,其余n-1个点为第二类点。之后进行n-1次 *** 作,一共选出了n-1个边(符合树的性质),构成了最小生成树。
素函数
素函数(prime function)是函数分解论中一类具特殊性质的函数。设F(z)为一亚纯函数,若F的任一个分解式f°g中,必导致f或g为一双线性函数时,则称F为素函数。
特别地,F(z)为一整函数,若因子皆为整函数的任一分解,必导致f或g为线性因子时,则称F为E素的。已经证明,凡是一个非周期性的E素的整函数也必为素的。
扩展资料
亚纯函数
左素函数是亚纯函数分解论中的一个概念。设F(z)为一亚纯函数,若F(z)的每一形如F(z)=f(g(z))的分解,当g为超越函数时,f必为双线性的(当f为超越函数时,g必为双线性的),则称F为左(右)素函数。
研究亚纯函数在复合意义下分解性质的理论,它主要探讨对于一个给定的亚纯函数可否以及如何将它分解成为两个或两个以上的非双线性亚纯函数的复合。
参考资料来源:百度百科-素函数
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)