高一数学

写出判断n(n>2)是否为质数的算法
为什麼教科书第二步,令i=2 (为什麼要令i=2,这步看不明白,为什麼不令i=0 i=1 i=其他,为什麼要令i=2,解释一次吧,顺便把算法写一次,谢谢!)

你首先要搞明白素数(素数也就是质数)的定义,小学三年级学过,大学初等数论里面又有更加专业的定义:不能被小于它的平方根的所有质数整除就是质数。那么这个平方根内最小的素数就一定是2 ,难道你还不知道2是最小的素数吗?不从2开始判断,难道从3开始判断吗?因为你说的那段程序代码就是根据这个数学定义写的。当然你还可以用其它的方法去写,那就要求你具备一定的数学和程序编写能力。
这就是你说的程序代码 i 是从2开始循环的原因。我分别用c语言 和vb 语言写一下
main()
{int n,r,i;
scanf("%d",&n);
for(i=2;i<=n-1;i++)
{r=n%i;
if(r==0) break;}
if(i>=n)
printf("yes\n");
else printf("no\n");
}
vb言语:
Private Sub Command1_Click()
Dim i , n As Integer
n = Val(InputBox("输入"))
For i = 2 To n - 1
If n Mod i = 0 Then Exit For
Next i
If i >= n Then
msgbox (""& n & "是素数",64,"提示")
Else:
msgbox (""& n & "不是素数",64,"提示")
End If
End Sub

以上程序代码分别在运行环境中调试过,输出结果为真,但是这两段代码还不是很优秀的算法,
当输入比较大的整数时候,循环的数量就很大,每一步就要进行一次计算比对。编程的灵魂就是算法,语法只是一个基础而已,而优秀的算法就是要求你有较高的发散性思维去构思它(所谓的技巧),这些和数学的要求如出一撤。
温馨提示:答案为网友推荐,仅供参考
第1个回答  2012-01-13
这个。。判断n是否质数的最朴素算法就是定义,也就是穷举因子
i作为候选的因子,不能用0,同时由于i=1是所有n的因子,不必判断,所以判断i是否为n的因子时令i的初值为2.本回答被提问者采纳
第2个回答  2012-01-12
2是第一个质数追问

不明,为什麼要令i=2 ????为什麼不令i=其他?

追答

从第一个开始

第3个回答  2020-12-23
相似回答