-
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
Cu Giả Giống Thật Gắn Tường – Cánh Cửa bí mật Đến Thế Giới rét mướt Và Viên Mãn Trong thế giới của những giác quan, nhu cầu được cảm nhận, được nâng niu và được thăng hoa là những bản năng sơ khai...
Chim giả hỗ trợ cá nhân gắn tường – Chăm sóc cảm xúc mỗi ngày