VFP编程: 输入入一个大于等于2的整数,判断是否为素数?说明:一个正整数若只能被1和他本身整除,就叫素

作者&投稿:董洋 (若有异议请与网页底部的电邮联系)
python编写程序,输入一个大于1的正整数,判断是否素数并输出结果.~

代码如下:
#coding=utf-8def is_prime(n): for j in range(2, n): if n % j == 0: return False return Trueif __name__ == '__main__': try: num = int(input('请输入一个大于1的正整数:')) if num < 1: raise ValueError("输入错误!") except ValueError: print('输入错误!') else: if num == 1: print('既不是素数也不是合数。') else: if is_prime(num): print('是素数。') else: print('是合数。')

素数(质数):就是一个大于等于2的整数,并且只能被1和本身整除,而不能被其他整数整除的数。

在窗体上画一个命令按钮和一个文本框~清空文本框中内容
在代码窗口编写如下代码
Private Function sushu(ByVal n As Long) As Boolean
Dim i As Long
For i = 2 To n - 1
If (n Mod i) = 0 Then Exit For
Next i
If i = n Then sushu = True
End Function
Private Sub Command1_Click()
Dim j As Integer
j = Val(Text1.Text)
If sushu(j) = True Then
Print "输入的是素数"
Else: Print "输入的不是素数"
End If


End Sub

INPUT"请输入一个大于2的整数"TO N
FLAG=T //这个t是表示ture,flag是一个标记变量,
FOR I=2 TO N-1 //这个循环i的值由2-i-1
IF MOD(N,I)=0 //在2-i-1这些数中如果除n的余数为0(mod是求余函数)
FLAG=F. //则把flag变量改为F,也就是false,
EXIT //同时用exit退出for循环
ENDIF
ENDFOR
IF FLAG=.T //循环后判定flag的值就可以判定n是不是素数
?N,"是素数"
ELSE
?N,"不是素数"
ENDIF

这个T,I分别代表什么?为什么要这样写???
T是素数标志。I是约数,N中间只有有一个>=2的约数(即能整除I)
就把是素数的标志T变为false...

我比较讨厌做这种试巻,出了一本本的书,说命名要规范。

他们出的这些烂题,自已就不规范。

不好意思,不会vfp 下面c的,你自个改改。

#include "stdio.h"
#include "math.h"
void main()
{
int input,div;

printf("please input num:");
scanf("%d",&input);

for(div=2;div<=sqrt(input);div++) //FOR I=2 TO N-1 相当于这个,素数判断不需到N-1,到这个数的开方就OK了。
{
if (input%div==0)
break;
}

if(div>sqrt(input))
{
printf("Prime Number:%d\n ",input);
}
else
{
printf("NOT prime number.\n");
}

}

i是一个整数变量,让循环每次从2开始,直到n-1为止,素数嘛,就是除了1和自身外不能被整除呀

所以这个代码就是测试从2开始(除了1)到n-1(自身外),有没有机会被MOD(整除)

I是循环变量
这个算法是把要判断的数用小于他大于1的数都试一遍
你还是多看看类似的例程吧,简单的还没看懂,哪里来的“思路”

I---在这里基本上是没有意义的,你可以换成任一个字母或字母开头的组合变量.只是他在每循环一次,就会加1.

T---就是判断是否为素数的变量值,通过循环,来重置FLAG变量,是素数时,其FLAG就返回T,否则就是初始的值F.你可以将FLAG初始为任何一个可以作为判断的值,但是最后的那个IF FLAG=T需要跟著变化就行.