2 qq 21524213 qq_21524213 于 2015.07.20 07:41 提问

老师 ,java 程序题目 求 质数 比如 90 输出 2 3 3 5

我 写 的程序 ,老师 指导 指导 , 运行报错,调试 也调试不了

package com.imocc;
public class Practice{
int user;
public void get(int x){
if((x==1)||(x==5)||(x==7)||(x==3)){
System.out.println(x);
return;
}
for( int i=2;i<x;x++){
if(x%i==0){
System.out.println(i);
user=x/i;
get(user);

       }
   } 

}

public static void main(String[] args) {
Practice prOB=new Practice();
prOB.get(10);

}

}

6个回答

LuizKing
LuizKing   2015.07.20 09:22

可以理解你这个是求质因子么?(我是一个小菜鸟,下面是我自己写的.....)
import java.util.Scanner;

public class wgcwgc
{
public static void main(String[] args)
{
Scanner cin = new Scanner (System.in);
int num = cin.nextInt();
System.out.print(num + "的质因子为: ");
test(num);
}

public static void test(int n)
{
    for(int i = 2;i <= n;i ++)
    {
        if(n % i == 0 && isPrime(i) == true)
        {
            System.out.print(i + " ");
            test(n / i);
            return;
        }
    }

}

public static boolean isPrime(int n)
{
    for(int i = 2;i * i <= n ;i ++)
        if(n % i == 0)
            return false;
    return true;
}

}
//-.-#

bdmh
bdmh   Ds   Rxr 2015.07.20 08:30
danielinbiti
danielinbiti   Ds   Rxr 2015.07.20 09:04
 public class Practice {
    public void get(int number){
        int i = 1;
        while (i < number) {
            if (number % i == 0 && i == 1){
                System.out.print(i + "x");
                number /=i;

            }else if (number % i == 0 && i != 1) {
                System.out.print(i + "x");
                number /=i;
                continue;
            }
            i++;
        }
        System.out.print(i);
    }
    /**
     * @param args
     */
    public static void main(String[] args) {
        Practice prOB=new Practice(); 
        prOB.get(90);
    }

}
strutce
strutce   Ds   Rxr 2015.07.20 09:28

int user;
public void get(int x){
if((x==1)||(x==5)||(x==7)||(x==3)){
System.out.println(x);
return;
}
for( int i=2;i<x;x++){
if(x%i==0){
System.out.println(i);
user=x/i;
get(user);
break;//-------------------get(user)然你形成的一个for循环嵌套这里加个break要不你这样好像执行完成了,其实这只是完成一个for循环
}
}

}

public static void main(String[] args) {
Practice prOB=new Practice();
prOB.get(10);

}

hongke_fei
hongke_fei   2015.07.20 11:51

public static boolean isPrime(long n) {
if (n <= 3) {
return n > 1;
}
if (n % 2 == 0 || n % 3 == 0) {
return false;
}

for (int i = 5; i * i <= n; i += 6) {
    if (n % i == 0 || n % (i + 2) == 0) {
        return false;
    }
}
return true;

}

tongyi55555
tongyi55555   2015.07.20 13:58

需要注意的是质数不包含1.正确答案已经点赞了。

Csdn user default icon
上传中...
上传图片
插入图片