Kết quả 1 đến 4 của 4
  1. #1
    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;
    }

  2. #2
    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ì?

  3. #3
    Ngày tham gia
    Jan 2015
    Bài viết
    0
    tai


    Trích dẫn Gửi bởi thethanh1207
    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ì?
    tại mình gõ lộn....



    Mã:
    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);
    }
    }
    }
    bạn chạy thử hộ mình....sao không in ra được

  4. #4
    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:


    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] 
    sửa j<=math.sqrt(x) thành j<=x/2 là được.

Quyền viết bài

  • Bạn Không thể gửi Chủ đề mới
  • Bạn Không thể Gửi trả lời
  • Bạn Không thể Gửi file đính kèm
  • Bạn Không thể Sửa bài viết của mình
  •