Đến nội dung

phucnguyen207

phucnguyen207

Đăng ký: 18-07-2018
Offline Đăng nhập: 20-07-2018 - 17:08
-----

Lập trình giải phương trình Beal

20-07-2018 - 17:06

Chào mọi người trong diễn đàn, hôm nay em xin post một tý công sức của em về giả thuyết Beal. Tự thấy đây vẫn chưa phải là thuật toán tối ưu nên mong mọi người cho em nhận xét để em con tiếp tục phát triển thuật toán.

p/s: Đây chỉ là cách 1: Sử dụng chắc thuật toán vét cạn:

package laptrinhbeal;
import java.util.Scanner;
import java.io.*;
public class giathuyetbeal {
public static int luythua(int a, int b) {
int i, s=1;
for(i=1; i<=b; i++)
{
s=s*a;
}
return s;
}
public static void main(String[]args) {
int A=1, B=1, C=1, x, y, z, P=0;
System.out.println("Nhap cac so x, y, z:");
Scanner scan = new Scanner(System.in);
x= scan.nextInt();
y= scan.nextInt();
z= scan.nextInt();
for(A=1; A<=100; )
{
for(B=1; B<=100; )
{
for(C=1; C<=100; )
{
P = luythua(A, x) + luythua(B, y) - luythua(C, z);
if(P!=0)
C++;
else break;
}
  if(P!=0)
B++;
else break;
}
if(P!=0)
A++;
else break;
}
System.out.println("A="+A+", "+"B="+B+", "+"C="+C);
}
Cách 2: Kết hơp̣ thuật toán vét cạn với giải hệ phương trình mũ:
package giathuyetbbeal;
import java.util.Scanner;
import java.io.*;
public class laptrinhtoan {
public static int somu(int a, int b) {
int i, s=1;
for(i=1; i<=b; i++)
s=s*a;
//System.out.println("s="+s);
return s;
}
public static void main(String[]args) {
int m, n, k=1, t=1, A=1, B=1, C=1, x=1, y=1, z=1, P=0;
System.out.printf("Nhap hai so m, n:");
Scanner scan = new Scanner(System.in);
m = scan.nextInt();
n = scan.nextInt();
for(k=1; k<=100; )
{
for(t=1; t<=100; )
{
P = somu(k, n) - somu(t, m) - 1;
if(P!=0)
t++;
else break;
}
if(P!=0)
k++;
else break;
}
System.out.println("k="+k+", "+"t="+t);
// somu(B, y) = somu(t, m)*somu(A, x);
// somu(C, z) = somu(k, n)*somu(A, x);
if((m>2)&&(n<=2))
{
y=x=m;
z=x+n;
C=A=k;
B=t*A;
}
else if((n>2)&&(m<=2))
{
z=x=n;
y=x+m;
B=A=t;
C=k*A;
}
System.out.println("A="+A+", "+"B="+B+", "+"C="+C);
System.out.println("x="+x+", "+"y="+y+", "+"z="+z);
}
}