-
03-22-2015, 07:00 AM #1
Junior Member
- Ngày tham gia
- May 2015
- Bài viết
- 0
Giúp em cái bài này với các bác ạ....
nó như thế này...viết hàm kiểm tra số hoàn hảo trong mảng...hàm đếm số hoàn hảo...
em đã làm mà nó kiểm tra không được
hàm kiểm tra như thế này mà nó không kiểm tra được
public static boolean ktshh(int[] a, int n) {
int s = 0;
for (int i=0;i<n;i++){
for (int j = 1; j <= a / 2; j++) {
if (a % j == 0)
s += j;
}
if (s == a) {
return true;
}
}
return false;
}
-
03-23-2015, 07:00 AM #2
Junior Member
- Ngày tham gia
- Apr 2015
- Bài viết
- 0
a là một mảng sao bạn lại %j rồi lại s==a? giải thuật của bạn là gì?
-
03-24-2015, 07:00 AM #3
Junior Member
- Ngày tham gia
- Jan 2015
- Bài viết
- 0
tai
tại mình gõ lộn....
Gửi bởi thethanh1207
bạn chạy thử hộ mình....sao không in ra đượcMã:import java.io.*; import java.util.*; import java.lang.*; public class mang { public static int[] a; public int nhap() { int n; do { system.out.print("- moi ban nhap so phan tu trong mang(n > 0): "); scanner num = new scanner(system.in); n = num.nextint(); } while (n < 0); return n; } public void nhapmang(int[] a) { scanner in = new scanner(system.in); for (int i = 0; i < a.length; i++) { system.out.print("a[" + i + "] = "); a[i] = in.nextint(); } } public static boolean ktshh(int x) { int s = 0; for (int j = 1; j <= math.sqrt(x); j++) { if (x % j == 0) s += j; } if (s == x) { return true; } return false; } public static int demshh(int[] a) { int dem = 0; for (int i = 0; i < a.length; i++) { if (ktshh(a[i])) dem++; } return dem; } public static void inshh(int[] a) { for (int i = 0; i < a.length; i++) { if (ktshh(a[i])) system.out.print(a[i] + " "); } } public static void main(string[] args) { mang mg = new mang(); scanner nh = new scanner(system.in); int n = mg.nhap(); int a[] = new int[n]; system.out.println("- moi ban nhap cac phan tu trong mang: "); mg.nhapmang(a); system.out.println("- co " + demshh(a) + " so hoan hao"); mg.inshh(a); } } }
-
03-24-2015, 07:00 AM #4
Junior Member
- Ngày tham gia
- Apr 2016
- Bài viết
- 0
có một số vấn đề trong chương trình của bạn.
hướng đối tượng mà bạn toàn khai báo static thì lại quay về lập trình cấu trúc mất rồi.
có biến bạn khai báo nhưng k sử dụng: scanner nh = new scanner(system.in);
bạn khai báo static nhưng lại gọi bằng đối tượng chứ không gọi bằng tên lớp: mg.inshh(a);
bạn không close() scanner.
còn về thuật toán thì bạn bị sai:
sửa j<=math.sqrt(x) thành j<=x/2 là được.Mã nguồn PHP:[color=#000000]
[/color][color=#007700]for ([/color][color=#0000bb]int j [/color][color=#007700]= [/color][color=#0000bb]1[/color][color=#007700]; [/color][color=#0000bb]j [/color][color=#007700]<= [/color][color=#0000bb]math[/color][color=#007700].[/color][color=#0000bb]sqrt[/color][color=#007700]([/color][color=#0000bb]x[/color][color=#007700]); [/color][color=#0000bb]j[/color][color=#007700]++) {if ([/color][color=#0000bb]x [/color][color=#007700]% [/color][color=#0000bb]j [/color][color=#007700]== [/color][color=#0000bb]0[/color][color=#007700])[/color][color=#0000bb]s [/color][color=#007700]+= [/color][color=#0000bb]j[/color][color=#007700];}[/color]

Trả lời kèm Trích dẫn
Khu căn hộ The Ascent chủ đầu tư Tiến Phát Corp giỏ hàng mới nhất sinh lời cao cư dân phóng khoáng. căn hộ The Ascent giỏ hàng mới nhất hiện đại nhất nhôm kính cao cấp. dự án căn hộ chung cư trung...
The Ascent Khu chung cư cao cấp tiện nghi hiện đại vị trí vàng