int number = 90; int maxPart = (int)Math.sqrt(new Double(number)); List<Integer> numList = new ArrayList<Integer>(); for(int i=2;i<maxPart;i++){ while(number%i==0){ number = number/i; numList.add(i); } } System.out.println(numList.toString());
哦,1楼的有错,改一下 int number = 90; List<Integer> numList = new ArrayList<Integer>(); for(int i=2;i<number+1;i++){ while(number%i==0){ number = number/i; numList.add(i); } } System.out.println(numList.toString());
public static void zhiyinshu(int n) { StringBuilder sb = new StringBuilder(); for (int i = 2; i <= n;) { while (n % i == 0) { n = n / i; // if(i != n) sb.append(i + "*"); // else sb.append(i); } i++; } sb.deleteCharAt(sb.toString().length() - 1); System.out.println(sb.toString()); }
package zhchljr;import java.util.ArrayList; import java.util.Collections; import java.util.Iterator; import java.util.List; import java.util.Scanner;public class Main { public static void main(String[] args) { Scanner input = new Scanner(System.in); System.out.println("请输入一个正整数:"); int num = input.nextInt(); print(num, find(num, getPrime(num))); }
这个还不错,但是可以对循环做一些改变。 public static void zhiyinshu(int n) { StringBuilder sb = new StringBuilder(); int m = n; for (int i = 2; i <= m / 2;) { while (n % i == 0) { n = n / i; sb.append(i + "*"); } i++; } if (sb.length() > 0) { sb.deleteCharAt(sb.toString().length() - 1); } else { sb.append(n); } System.out.println(sb.toString()); }
public static String zhiyinshu(int num) { String result = ""; int count = 2; while (true) { if (num % count == 0) { result += (count + "*"); num = num / count; } else { count++; } if (num < count) { break; } } if (result.endsWith("*")) { result = result.substring(0, result.length() - 1); } return result; }
int maxPart = (int)Math.sqrt(new Double(number));
List<Integer> numList = new ArrayList<Integer>();
for(int i=2;i<maxPart;i++){
while(number%i==0){
number = number/i;
numList.add(i);
}
}
System.out.println(numList.toString());
List<Integer> numList = new ArrayList<Integer>();
for(int i=2;i<number+1;i++){
while(number%i==0){
number = number/i;
numList.add(i);
}
}
System.out.println(numList.toString());
StringBuilder sb = new StringBuilder();
for (int i = 2; i <= n;) {
while (n % i == 0) {
n = n / i;
// if(i != n)
sb.append(i + "*");
// else sb.append(i);
}
i++;
}
sb.deleteCharAt(sb.toString().length() - 1);
System.out.println(sb.toString());
}
package zhchljr;import java.util.ArrayList;
import java.util.Collections;
import java.util.Iterator;
import java.util.List;
import java.util.Scanner;public class Main {
public static void main(String[] args) {
Scanner input = new Scanner(System.in);
System.out.println("请输入一个正整数:");
int num = input.nextInt();
print(num, find(num, getPrime(num)));
}
//写一个函数,找出2到输入的数字一半之间的所有素数
public static List<Integer> getPrime(int num) {
List<Integer> primes = new ArrayList<Integer>();
for(int i=2; i<= num/2; i++) {
if(isPrime(i)) {
primes.add(i);
}
}
return primes;
}
//判断一个整数是否为素数
public static boolean isPrime(int num) {
boolean flag = false;
int i;
for(i=2; i<=num/2; i++) {
if(num % i == 0) {
break;
}
}
if(i >= num/2) {
flag = true;
}
return flag;
}
//找输入的数字的质因子,返回找到的所以质因子
public static List<Integer> find(int num, List<Integer> primes) {
List<Integer> results = new ArrayList<Integer>();
Collections.sort(primes);
int d;
Iterator<Integer> iterator = null;
while(num > 1) {
iterator = primes.iterator();
while(iterator.hasNext()) {
d = iterator.next();
if(num % d == 0) {
results.add(d);
num = num / d;
break;
}
}
}
return results;
}
//组合质因子,得到最终的结果
public static void print(int num, List<Integer> results) {
Iterator<Integer> iterator = results.iterator();
StringBuffer sb = new StringBuffer();
sb.append(num + "=");
while(iterator.hasNext()) {
sb.append(iterator.next() + "*");
}
System.out.println(sb.substring(0, sb.length() - 1));
}
}楼主,这是我利用上班的时间写的程序,楼主看看,能否满足需求!祝你好运!
这个还不错,但是可以对循环做一些改变。 public static void zhiyinshu(int n)
{
StringBuilder sb = new StringBuilder();
int m = n;
for (int i = 2; i <= m / 2;)
{
while (n % i == 0)
{
n = n / i;
sb.append(i + "*");
}
i++;
}
if (sb.length() > 0)
{
sb.deleteCharAt(sb.toString().length() - 1);
}
else
{
sb.append(n);
}
System.out.println(sb.toString());
}
public static String zhiyinshu(int num) {
String result = "";
int count = 2;
while (true) {
if (num % count == 0) {
result += (count + "*");
num = num / count;
} else {
count++;
}
if (num < count) {
break;
}
}
if (result.endsWith("*")) {
result = result.substring(0, result.length() - 1);
}
return result;
}