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+"没有素数因子!");
}
}仔细看看,你的逻辑有问题!!
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+"没有素数因子!");
}
}仔细看看,你的逻辑有问题!!
试试着个吧 呵呵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);
}
}
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 个
下面是我根据你的意见对我原来的程序修改后的得到的正确程序:
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;
}
}