如何用EXCEL或C语言求解三元一次方程的所有正整数解组 比如33a+42b+53c=46580,求a,b,c,并显示

2024-12-31 19:57:49
推荐回答(4个)
回答1:

鼠标右击Sheet1的标签【查看代码】,在代码窗口粘贴下面的代码:
Sub ouyang()
For a = 1 To 1412
For b = 1 To 1412
c = (46580 - 33 * a - 42 * b) / 53
If c > 0 And (c = Int(c)) Then
t = t + 1
Cells(t, 1) = a: Cells(t, 2) = b: Cells(t, 3) = c
End If
Next
Next
End Sub
按 F5 运行程序,按Alt + F11回到Excel就可看到有 14671组解!

回答2:

晕,你问了两个方法,楼上都正确,分给谁呢?都不好给。
还是给我吧!
方法1 c:
#include
void main()
{
int a,b,c;
for(a=1;a<=10000;++a)
for(b=1;b<=10000;++b)
for(c=1;c<=10000;++c)
if(33*a+42*b+53*c==46580)
printf("a=%d\t b=%d\t c=%d\t \n",a,b,c);
}
方法2:excel方法:鼠标右击Sheet1的标签【查看代码】,在代码窗口粘贴下面的代码:
Sub ouyang()
For a = 1 To 1412
For b = 1 To 1412
c = (46580 - 33 * a - 42 * b) / 53
If c > 0 And (c = Int(c)) Then
t = t + 1
Cells(t, 1) = a: Cells(t, 2) = b: Cells(t, 3) = c
End If
Next
Next
End Sub
按 F5 运行程序,按Alt + F11回到Excel就可看到有 14671组解!

回答3:

#include
void main()
{
int a,b,c;
for(a=1;a<=10000;++a)
for(b=1;b<=10000;++b)
for(c=1;c<=10000;++c)
if(33*a+42*b+53*c==46580)
printf("a=%d\t b=%d\t c=%d\t \n",a,b,c);
}

回答4:

给你用EXcel做了个VBA,你留个邮箱,我发给你