java分解質因數
❶ java程序設計;將一個正整數分解質因數。
import java.util.Scanner;
public class TestNum3 {public static void main(String[] args) {
Scanner scanner = new Scanner(System.in);
//這兒是要做輸入驗證的,不過我就略了吧!
System.out.println("請輸入數字");
int num= scanner.nextInt();
System.out.println("結果:");
System.out.println(num+"="+getPrimeNumberStyle(num));}
public static String getPrimeNumberStyle(int num){int temp=0;for (int i = 2; i < num+1; i++) {if(num%i==0&&i!=num){int n=num/i;return i+"*"+getPrimeNumberStyle(n);}temp=i;}return ""+temp;}} //像這種問題希望你復習一下數學知識,你解決它以後會很有成就感的!這個解決過程還是//數學原理在程序中的應用,希望能幫到你
❷ 急!!JAVA程序 怎麼把一個數分解質因數呀要代碼
public class Test {
/**
* @param args
*/
public static void main(String[] args) {
// TODO Auto-generated method stub
int num=40;//測試數據,你也可以用Scanner獲取輸入數據,但是為了方便
for(int i=2;i<=num;i++){
while(num!=i){
if(num%i==0){
System.out.println("質因數是:"+i);
num=num/i;
}
else
break;
}
}
System.out.println("質因數是:"+num);
}
}
❸ 用JAVA中遞歸思想編寫程序:分解質因數例如90=2×3×3×5
按照你的要求編寫的Java程序如下:
importjava.util.Scanner;
publicclassCCT{
publicstaticvoidf(intn,intm){
inti=2;
if(n<2)return;
while(!(n%i==0)){
i++;
}
if(m==1)System.out.print(i);
elseSystem.out.print("*"+i);
f(n/i,m-1);
return;
}
publicstaticvoidmain(String[]args){
Scannersc=newScanner(System.in);
intn=sc.nextInt();
System.out.print(n+"=");
f(n,1);
System.out.println();
}
}
運行結果:
90
90=2*3*3*5
❹ java,關於求將一個正整數分解質因數,例如:輸入90,列印出90=2*3*3*5。
在for循環結束之後列印一下x的值就可以了啊
=================================================================
public static void main(String[] args){
int i;//題目:將一個正整數分解質因數。例如:輸入90,列印出90=2*3*3*5。
Scanner sc = new Scanner(System.in);
System.out.println("輸入數字吧");
int x = sc.nextInt();//
System.out.print(x+"=");
for(i=2;i<88;i++)//
{
while(x!=i)//找到最小質數
{
if(x%i==0)
{
System.out.print(i+"*");
x=x/i;
}else {
break;
}
}
}
System.out.print(x);//加的就是這句話
}
❺ 求一個Java分解質因數方法
public class L {
public static void main(String[] args) {
new T(14);
}
}
class T {
int g, i;// g為最小質數,i為s數組的下標
String[] s = new String[10];// 存放質數,即結果的組成部分
String str = "";// 輸出結果
T(int a) {
if (a != 1) {// 輸入若不為1,進行分解操作
while (g <= a) {
g = ZS(a);// 獲取第一個最小質數
s[i] = String.valueOf(g);
a = a / g;// 所求數除掉最小質數,然後,接著循環
i++;
}
for (int j = 0; j < i; j++) {
str = str + "*" + s[j];
}
}
System.out.println(str.substring(1));
}
public int ZS(int s) {// 判斷最小質數的方法
int a, b, k = 0;
for (a = 2; a <= s; a++) {
for (b = 2; b <= a / 2; b++) {// 讓b小於a/2的情況下
if (a % b == 0)// 判斷a能出盡的數,只要遇到一個,立刻跳出
break;
}
if (b > a / 2) {// 跳出的數的下一個數,即為所需質數
k = a;
if (s % k == 0)// 如果質數和所求的數的本身相等,就跳出for循環
break;
}
}
return k;
}
}
❻ 用java輸入一個整數分解成質因數如90輸出5x3x2
import java.util.Scanner;
/**
* @author Administrator
*
*/
public class Demo7 {
public static void main(String[] args) {
primeFactor();// 調用primeFactor()方法
}
/*
* 程序分析:對n進行分解質因數,應先找到一個最小的質數k,然後按下述步驟完成:
* (1)如果這個質數恰等於n,則說明分解質因數的過程已經結束,列印出即可。
* (2)如果n>=k,但n能被k整除,則應列印出k的值,並用n除以k的商,作為新的正整數你n,重復執行第一步。
* (3)如果n不能被k整除,則用k+1作為k的值,重復執行第一步。
*/
public static void primeFactor() {// 該方法將一個正整數分解成質因數相乘的形式
Scanner scan = new Scanner(System.in);// 接收控制台輸入的信息
System.out.print("請輸入一個正整數:");
try {
int num = scan.nextInt();// 取出控制台輸入的信息
if (num < 2) {// 若輸入的數小於2,輸出提示信息
System.out.println("必須輸入不小於2的正整數!");
} else {
int primeNumber = 2;// 定義最小的質數
System.out.print(num + " = ");
while (primeNumber <= num) {// 在質數小於輸入的數時,進行循環
if (primeNumber == num) {// 當質數等於輸入的數時,直接輸出
System.out.print(num);
break;// 跳出循環
} else if (num % primeNumber == 0) {// 當輸入的數與質數的余數為0時,輸出這個質數
System.out.print(primeNumber + " * ");
num = num / primeNumber;// 把剩下的結果賦給num
} else {// 在余數不為0時,質數遞增
primeNumber++;
}
}
}
} catch (Exception e) {
System.out.println("必須輸入正整數!");// 捕捉異常,輸出必須輸入整數
}
}
}
❼ 用java編程可以將一個正整數分解質因數嗎
將一個正整數分解質因數。例如:輸入60;列印出2*3*5*2
演算法實現構思:
1、用Scanner實現輸入一個正整數n
2、用一個for循環遍歷一個從 k=2開始查找到k<=n的數
3、如果 n%k==0的時候,輸出k的值
4、然後把n的值遞歸一下,即 n=n/k
5、這個時候要把for循環重新執行,即再定義k=2
下面是實現代碼:
上面是後來整理的構思以及代碼實現,一開始拿到這個題目,就立馬去做了,可是馬上掉進了各種各樣的坑,我覺得以後做演算法題先把做題思路想好,從部分到整體,不然一道簡單的演算法題就要耗掉很多時間。
❽ Java 分解質因數
package com.ycy.Test01;
import java.util.Scanner; //輸入方法包
public class Test4 {
public static void main(String args[]){
Scanner scanner = new Scanner(System.in);
int x = scanner.nextInt();
int n = 0; //統計質因數個數
int m = 1; //判斷是否為質數的依據,為1就是質數,為0是非質數
int a[] = new int[10000]; //存放質因數
for(int i=2;i<x;i++){ //判斷是否為質數
if((x%i)==0){
m = 0;
break;
}
}
if(m!=0){ //為質數則直接輸出
System.out.println("該數是素數,所以:"+x+"=1*"+x);
}
else{ //不為質數的情況
for(int j=x,k=2;k<=j;){ //分解質因數過程
if((j%k)==0){
a[n]=k;
j = j/k;
n++;
k = 2;
}
else{
k++;
}
}
System.out.print(x+"=");
for(int k=0;k<n;k++){
if(k==n-1){
System.out.print(a[k]);
}else{
System.out.print(a[k]+"*");
}
}
}
}
}