主题:编程验证歌德巴赫猜想该怎样编?
ahei
[专家分:150] 发布于 2005-06-02 19:40:00
[em18]
编程验证歌德巴赫猜想该怎样编?
回复列表 (共12个回复)
11 楼
penglin [专家分:160] 发布于 2005-10-13 13:35:00
#include"stdio.h"
int fun(int c);
void main()
{
int a,i;
printf("input a number:");
scanf("%d",&a);
for(i=2;i<=a/2;i++)
if(fun(i))
if(fun(a-i))
printf("%d=%d+%d\n",a,i,a-i);
}
int fun(int c)
{
int b;
for(b=2;b<c;b++)
if(c%b==0)
break;
if(c==b)
return 1;
else
return 0;
}
不知道对不?
12 楼
moz [专家分:37620] 发布于 2005-10-14 11:23:00
DECLARE FUNCTION IsZhiShu& (a&)
CLS
input ;k&
DO while k&
l&=k&\2
for i&=2 to l&
i&=IsZhiShu&(i&)
j&=k&-i&
if j&=IsZhiShu&(j&) then exit for
next
print "=";i&;"+";j&
input;k&
LOOP
end
FUNCTION IsZhiShu& (a&)
f% = FREEFILE
OPEN "质数表" FOR RANDOM AS #f% LEN = LEN(a&)
IF LOF(f%) = 0 THEN
z& = 2
PUT #f%, 1, z&
z& = 3
PUT #f%, 2, z&
END IF
e& = LOF(f%) \ LEN(a&)
GET #f%, e&, z&
SELECT CASE a&
CASE IS <= 2
IsZhiShu& = 2
CASE IS >= z&
DO UNTIL z& >= a&
DO
z& = z& + 2
q& = SQR(z&)
if (z& mod 3) and (z& mod 5) then
i& = 4
DO
GET #f%, i&, k&
IF z& MOD k& = 0 THEN EXIT DO
i& = i& + 1
LOOP UNTIL k& > q&
end if
LOOP UNTIL k& > q&
e& = e& + 1
PUT #f%, e&, z&
'LOCATE 5, 5: PRINT e&, z&
LOOP
IsZhiShu& = z&
CASE IS < z&
m& = e& * a& / z&
If m& < 1 Then m& = 1
Get #f%, m&, b&
If b& > a& Then
l& = m& - (b& - a&)\3 -2
If l& < 1 Then l& = 1
else
l&=m&
End If
If b& < a& Then
r& = m& + (a& - b&)\3 +2
If r& > e& Then r& = e&
else
r&=m&
End If
DO
m& = (r& + l&) / 2
GET #f%, m&, b&
IF a& > b& THEN l& = m& ELSE r& = m&
LOOP UNTIL r& - l& < 2
GET #f%, r&, b&
IsZhiShu&=b&
END SELECT
CLOSE #f%
END FUNCTION
我来回复