import java.io.*;
public class PrimeFactor
{
 public static void main(String args[])
{
 int count=0,number=0,j=0;
 String s;
 try{
   System.out.print("请输入一个大于2的正数:");
BufferedReader br=new BufferedReader(new InputStreamReader(System.in));
 s=br.readLine();
 number=Integer.parseInt(s);
 while(number<2){
 System.out.println("您的输入有误,请检查后重新输入!");
 System.out.print("请输入一个大于2的正数:");
 br=new BufferedReader(new InputStreamReader(System.in));
 s=br.readLine();
 number=Integer.parseInt(s);}
}catch(IOException e){}
 Loop:
 for(int i=2;i<number;i++){
  if(number%i==0){
 for( j=2;j<i;j++)
  if(i%j==0)
   continue Loop;}
  count++;}
 if(count==1)System.out.println(number+"的素数因子:");
 System.out.print(j+" ");
 if(count%10==0)System.out.println();
 if(count==0)System.out.println(number+"没有素数因子!");
}
}仔细看看,你的逻辑有问题!!

解决方案 »

  1.   

    数学问题
    试试着个吧 呵呵import java.io.*;public class PrimeFactor {
      public static void main(String args[]) {
        int count = 0, number = 0;
        String s;
        try {
          System.out.print("请输入一个大于2的正数:");
          BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
          s = br.readLine();
          number = Integer.parseInt(s);
          while(number < 2) {
            System.out.println("您的输入有误,请检查后重新输入!");
            System.out.print("请输入一个大于2的正数:");
            br = new BufferedReader(new InputStreamReader(System.in));
            s = br.readLine();
            number = Integer.parseInt(s); }
        } catch(IOException e) {}
        /*Loop:
        for(int i = 2; i < number; i++) {
          if(number % i == 0) {
            for(int j = 2; j < i; j++)
              if(i % j == 0)
                continue Loop;
          }
          count++;
          if(count == 1)
            System.out.println(number + "的素数因子:");
          System.out.print(i + " ");
          if(count % 10 == 0)
            System.out.println();
        }
        if(count == 0)
          System.out.println(number + "没有素数因子!");*/
        s = "";
        System.out.print("全部因子: ");
        for(int i = 2;i <= number;i++)
          if(number % i == 0){
            System.out.print(i + " ");
            if(i%2 != 0)
              s += i+" ";
          }
        System.out.print("\n素数因子: "+s);
      }
    }
      

  2.   

    怎么会有问题? 你拿什么数做的检验?import java.io.*;public class PrimeFactor {
      public static void main(String args[]) {
        int count = 0, number = 0;
        String s;
        try {
          System.out.print("请输入一个大于2的正数:");
          BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
          s = br.readLine();
          number = Integer.parseInt(s);
          while(number < 2) {
            System.out.println("您的输入有误,请检查后重新输入!");
            System.out.print("请输入一个大于2的正数:");
            br = new BufferedReader(new InputStreamReader(System.in));
            s = br.readLine();
            number = Integer.parseInt(s); }
        } catch(IOException e) {}    s = "";
        System.out.print("全部因子: ");
        for(int i = 1;i <= number;i++)
          if(number % i == 0){
            System.out.print(i + " ");
            if(i!=1 && i%2 != 0){
              s += i+" ";
              count++;
            }
          }
        if(count == 0)
          System.out.print("\n没有素数因子!");
        else
          System.out.print("\n素数因子: "+s + "\t-- 共 "+count+" 个");
      }
    }
    =====================================
    >java PrimeFactor
    请输入一个大于2的正数:128
    全部因子: 1 2 4 8 16 32 64 128
    没有素数因子!
    >java PrimeFactor
    请输入一个大于2的正数:65
    全部因子: 1 5 13 65
    素数因子: 5 13 65       -- 共 3 个
      

  3.   

    楼上这位大侠你有个小学算术的错误,怎么能说奇数就是素数呢!!!有没有搞错!!!看这句:if(i!=1 && i%2 != 0),那你的程序9和15等等都成素数因子了!
    下面是我根据你的意见对我原来的程序修改后的得到的正确程序:
    import java.io.*;public class PrimeFactor_2 {
      public static void main(String args[]) {
        int count = 0, number = 0;
        String s;
        try {
          System.out.print("请输入一个大于2的正数:");
          BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
          s = br.readLine();
          number = Integer.parseInt(s);
          while(number < 2) {
            System.out.println("您的输入有误,请检查后重新输入!");
            System.out.print("请输入一个大于2的正数:");
            br = new BufferedReader(new InputStreamReader(System.in));
            s = br.readLine();
            number = Integer.parseInt(s); }
        } catch(IOException e) {}    s = "";
        System.out.print("全部因子: ");
        for(int i = 1;i <= number;i++)
          if(number % i == 0){
            System.out.print(i + " ");
            if(i!=1&&IsPrimeNumber(i)){
              s += i+" ";
              count++;
            }
          }
        if(count == 0)
          System.out.print("\n没有素数因子!");
        else
          System.out.print("\n素数因子: "+s + "\t-- 共 "+count+" 个");
      }
     static boolean IsPrimeNumber(int x)
    {
      for(int i=2;i<x;i++)
     if(x%i==0)return false;
      return true;
    }
    }