问题描述
- 老师 ,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);}
}
解决方案
可以理解你这个是求质因子么?(我是一个小菜鸟,下面是我自己写的.....)
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;
}
}
//-.-#
解决方案二:
http://blog.csdn.net/wuleihenbang/article/details/8675968
解决方案三:
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);
}
}
解决方案四:
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);
}
解决方案五:
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;
}
解决方案六:
需要注意的是质数不包含1.正确答案已经点赞了。