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

各位帮个忙吧,看看这个题!!
在main函数中调用函数fun(int[] a, int m),(其中m是在main中用键盘输入的小于100的整数),用fun函数找出大于整数m,并且邻接m的5个素数,将这5个素数,用a数组接收,并在main中输出;(请根据题目完成main和fun函数的编写)
这是我写的,可是得不到所要的结果
 public static void fun(int[]a,int m)
  {
  int i;
  int max=5;
  for(i=2;i<=m;i++)
  {
  for(int j=0;j<a.length;j++)
  {
  if(i<Math.sqrt(m)&&(m%i!=0)) break;
  if(i>Math.sqrt(m)) a[j]=m;
  }
  }
  int b=a.length;
  while(a.length-b<max){
  for(int j=0;j<a.length;j++){
  if(i%j==0){
  break;
  }
  }i++;
  }
 
  }
  public static void main (String[] args) {
  System.out.println("please enter <100 numbers:");
  Scanner bh=new Scanner(System.in);
  int m=bh.nextInt();
  int []a=new int[5];
  fun(a,m);
  for(int i=0;i<a.length;i++)
  System.out.print(a[i]+",");
}

------解决方案--------------------
你看这是不是你想要的效果?
Java code


import java.util.Scanner;

/**
 * Created by IntelliJ IDEA.
 * User: Administrator
 * Date: 2011-9-29
 * Time: 21:45:16
 * To change this template use File | Settings | File Templates.
 */
public class ShowNumber {
    public static boolean isPrimeNumber(int num){
        boolean result=true;
        if(num==2)
            return true;
        for(int i=2;i<=num/2;i++){
            if(num%i==0){
//                result=false;
                return false;
            }
        }
        return result;
    }

    public static void fun(int[]a,int m)
    {
//        int i;
        int max=5;
        if(a==null){
            a=new int[5];
        }
        int primeNum=0;
        for(int i=m+1;primeNum<5;i++){
              if(isPrimeNumber(i)){
                   a[primeNum]=i;
                  primeNum++;
              }
        }

    }
    public static void main (String[] args) {
        System.out.println("please enter <100 numbers:");
        Scanner bh=new Scanner(System.in);
        int m=bh.nextInt();
        int []a=new int[5];
        fun(a,m);
        for(int i=0;i<a.length;i++)
            System.out.print(a[i]+",");

    }
}