朱飞雄信鸽:劳烦各位大侠一分钟。。。帮我编两道题。。

来源:百度文库 编辑:查人人中国名人网 时间:2024/05/09 07:55:11
1.从键盘输入一个数M,编程求出2到M的所有素数
2.输入一个数M,求2到M中的完全数(因数之和等于它本身的数,如28=1+2+4+7+14)
不知道,那个是叫VB语言么?就是Dim什么什么if什么什么then...print...
我是电脑盲。。。又不幸碰这些东西。。。唉。。。

楼上的全注意了,正确答案来了,分数我要了
此代码只需添加两个 command按钮到窗体既可

Private Sub Command1_Click() '求素数
Form1.AutoRedraw = True
Dim a, b As Integer
Dim n As Integer
n = InputBox("请输入一个正整数")
For a = 3 To n
b = 2
Do Until a Mod b = 0
b = b + 1
If b = a Then
Print a & " 是素数"
Exit Do
End If
Loop
Next a
End Sub

Private Sub Command2_Click() '求完全数
Form1.AutoRedraw = True
Dim a, b, c, n As Integer
Dim n As Integer
n = InputBox("请输入一个正整数")
For a = 2 To n
c = 0
For b = 1 To a - 1
If a Mod b = 0 Then
c = c + b
End If
Next
If a = c Then
Print a & " 是完全数"
End If
Next
End Sub

晕。你会不会VB啊。如果是VB的话这样把代码给你了你也没有用,如果你是完全不会的话。。。
这样吧,我跟你讲一下算法。
第一题:
1:首先肯定是有循环,for(i=2;i<=M;i++)[C语言版] For i=2 to M step 1[QB版]
2:有了循环肯定还要判断他是不是素数,判断他是不是素数就可以用1到那个数的平方根来一个个的试,如果有相等,那就说明不是素数,如果没有相等那就说明是素数,如果是素数就输出到屏幕上面printf("M=d%,",M);[C语言版] print M [QB版]。
第二题:
思路跟第一题基本相同,只是第二步那个表达式稍有不同,也稍微复杂一点,不过如果你能够搞定第一题,再经过一点点思考,搞定第二题也很容易了。

/***对不起,我不会VB
用C作的,你可以适当修改~
winTc上编译通过
**/

#include <math.h>
main()
{
int num;
printf("input M:");
scanf("%d",&num);
zhishu(num);
printf("----------\n");
wanshu(num);
getch();
}

int zhishu(int num) /**判断质数***/
{
int i,j;
for(i=2;i<=num;i++)
{
for(j=2;j<=sqrt(i);j++)
{
if((i%j)==0) break;
}
if(j>sqrt(i)) printf("%d\n",i);
}
}

int wanshu(int num) /**判断完全数***/
{
int i,j,sum=1;

for(i=2;i<=num;i++)
{
for(j=2;j<=(i/2);j++)
{
if(i%j==0) sum=sum+j;
}
if(sum==i) printf("%d\n",i);
sum=1;
}
}

既然是这样你就没有必要知道了啊!
如果你实在想知道你就自己去学习就好了并且以后也不用去请教其他人了,因为你 自己会了。
虽然我会但是我现在不会告诉你,如果我现在就告诉你了你就不会去学习了,等到你学习了会了的时候我们可以在一起学习更加好的,努力吧,相信你自己你一定能够行的我支持你。

在窗体上放一个textbox名字是txt

放两个按钮,一个名字叫cmd1,另一个cmd2

添加代码

'素数
Private Sub cmd1_Click()
For i = 2 To Int(txt.Text)
For j = 2 To j <= Sqr(i)
If ((i Mod j) = 0) Then
Exit For
End If
Next j
If (j > Sqr(i)) Then Print (i)
Next i
End Sub

'完全数
Private Sub cmd2_Click()
Dim sum As Integer
sum = 1
For i = 2 To Int(txt.Text)
For j = 2 To i / 2

If (i Mod j = 0) Then sum = sum + j
Next
If (sum = i) Then Print (i)
sum = 1
Next

绝对可用,需要的话,我把代码发给你
End Sub

看样子是要用c编吧,你也要告诉我们是哪种 阿,c有很多种的。