日期:2014-05-20  浏览次数:20890 次

java编程急求!!
在main函数中调用函数fun(int[] a, int m),(其中m是在main中用键盘输入的小于100的整数),用fun函数找出大于整数m,并且邻接m的5个素数,将这5个素数,用a数组接收,并在main中输出;(请根据题目完成main和fun函数的编写)

------解决方案--------------------
Java code

//剩下自己写
    static void fun(Integer[] a, int m) {
        List<Integer> list = new ArrayList(1000);
        int max = 5;

        //得到 2 到 m 的素数
        list.add(2);
        int i;
        for (i = 3; i <= m; i++) {
            boolean flag = true;
            for (Integer j : list) {
                if (i % j == 0) {
                    flag = false;
                    break;
                }
            }
            if (flag) {
                list.add(i);
            }
        }
        int len = list.size();

        //再向后找五个素数
        while (list.size() - len < max) {
            boolean flag = true;
            for (Integer j : list) {
                if (i % j == 0) {
                    flag = false;
                    break;
                }
            }
            if (flag) {
                list.add(i);
            }
            i++;
        }

        if (a != null && a.length > 4) {
            Integer[] b = list.subList(len, list.size()).toArray(a);
            System.arraycopy(b, 0, a, 0, b.length < max ? b.length : max);
        }
    }
    public static void main(String[] args) {
        Integer[] a = new Integer[5];
        fun(a, 100);
        for (Integer i : a) {
            System.out.print(i + ", ");
        }
    }

------解决方案--------------------
Java code

package com.test;

import java.io.File;
import java.io.UnsupportedEncodingException;
import java.math.BigDecimal;
import java.util.ArrayList;
import java.util.List;
import java.util.Scanner;

public class Test {

    // 剩下自己写
    static void fun(Integer[] a, int m) {
        List<Integer> list = new ArrayList(1000);
        int max = 5;

        // 得到 2 到 m 的素数
        list.add(2);
        int i;
        for (i = 3; i <= m; i++) {
            boolean flag = true;
            for (Integer j : list) {
                if (i % j == 0) {
                    flag = false;
                    break;
                }
            }
            if (flag) {
                list.add(i);
            }
        }
        int len = list.size();

        // 再向后找五个素数
        while (list.size() - len < max) {
            boolean flag = true;
            for (Integer j : list) {
                if (i % j == 0) {
                    flag = false;
                    break;
                }
            }
            if (flag) {
                list.add(i);
            }
            i++;
        }

        if (a != null && a.length > 4) {
            Integer[] b = list.subList(len, list.size()).toArray(a);
            System.arraycopy(b, 0, a, 0, b.length < max ? b.length : max);
        }
    }

    public static void main(String[] args) {
        System.out.println("请再键盘输入小于100的数");
        Scanner console = new Scanner(System.in);// 从键盘接收数据
        int num = console.nextInt();
        Integer[] a = new Integer[5];
        fun(a, num);
        for (Integer i : a) {
            System.out.print(i + ", ");
        }
    }
}