int num = 90; String result = "90="; int i = 2; while(num > 1){ if(num % i == 0) { result += i + "*"; num /= i; } else i ++; } System.out.println(result.substring(0, result.length()-1));
把三楼的while(num > 1) 改成 while(num >= i) 更好
可以用递归实现: 设num是需要求解的数值,按如下步骤; 令 n = {2 <= n <=sqrt(num)},依次扫描是否能够被num整除[第一个能被整除的数一定是个质数] 如果出现第一个能整除num的n,则n为第一个分解的质数,然后num等于num/n,递归调用即可; 如果n都不能被num整除,说明num本身就是一个质数。 package number;public final class NumberHandle { public static void decomposition(int num) { if (num <= 1) { System.out.println("The given number less or equals to 1"); return; } StringBuffer sb = new StringBuffer(); sb.append(num + " = "); split(num, sb); System.out.println(sb); }
int main( void ) { int i, j, m, max; char *su=(char*)malloc(100000000); scanf("%d", &max); m =sqrt( max); for(i=2; i<=m; i++) if(su[i]==0) for(j=i*i; j<max; j+=i) su[j] = 1; free(su); return 0; } 在网上搜的,1亿以内只要3秒钟就可以生成。
public class zz{ public static void main(String[] arg){ int p=90; int i=2; int[] a=new int[10]; System.out.print("p的因数:"); while(i<90){ if(p%i==0){ p=p/i; System.out.print(i+" ");
package src;public class PrimeSub { public static void main(String[] args) { int num = 100; String result = "90="; int i = 2; while(num >=i){ if(num % i == 0) { result += i + "*"; num /= i; } else i ++; } System.out.println(result.substring(0, result.length()-1)); }}
int num = 90;
String result = "90=";
int i = 2;
while(num > 1){
if(num % i == 0) {
result += i + "*";
num /= i;
} else
i ++;
}
System.out.println(result.substring(0, result.length()-1));
改成 while(num >= i) 更好
设num是需要求解的数值,按如下步骤;
令 n = {2 <= n <=sqrt(num)},依次扫描是否能够被num整除[第一个能被整除的数一定是个质数]
如果出现第一个能整除num的n,则n为第一个分解的质数,然后num等于num/n,递归调用即可;
如果n都不能被num整除,说明num本身就是一个质数。
package number;public final class NumberHandle {
public static void decomposition(int num) {
if (num <= 1) {
System.out.println("The given number less or equals to 1");
return;
}
StringBuffer sb = new StringBuffer();
sb.append(num + " = ");
split(num, sb);
System.out.println(sb);
}
public static void split(int num, StringBuffer sb) {
boolean isQulity = true;
for (int i = 2; i <= Math.sqrt(num); i++) {
if (num % i == 0) {
sb.append(" " + i + " * ");
split((int) num / i, sb);
isQulity = false;
break;
}
}
if (isQulity) {
sb.append(num);
}
}
public static void main(String[] args) {
decomposition(1000);
}
}
import java.util.Scanner;public class Factors
{
public static void main(String[] args)
{
Scanner scan = new Scanner(System.in);
int prod = scan.nextInt(); int i = 2;
while(true)
{
if(prod % i == 0)
{
prod /= i;
System.out.print(i);
if(prod != 1)
{
System.out.print("*");
}
else{
break;
}
}
else{
i++;
}
}
}
}
import java.util.Scanner;public class PrintPrimeNumber{
private final static Scanner sc= new Scanner(System.in);
public static int getNum(String s){
int num;
while(true){
try{
System.out.println(s);
num = sc.nextInt();
break;
}catch(Exception e){
System.out.println("非法数据!");
sc.next();
}
}
return num;
}
public static void main(String[] args){
int n=getNum("请输入一个整数:");
for(int i=2;i<=n;i++)
while(n!=i){
if(n%i==0){
System.out.printf("%d*",i);
n=n/i;
}
else
break;
}
System.out.printf( "%d",n);
}
}
#include <stdio.h>
#include <stdlib.h>
int main( void )
{
int i, j, m, max;
char *su=(char*)malloc(100000000);
scanf("%d", &max);
m =sqrt( max);
for(i=2; i<=m; i++)
if(su[i]==0)
for(j=i*i; j<max; j+=i)
su[j] = 1;
free(su);
return 0;
} 在网上搜的,1亿以内只要3秒钟就可以生成。
public class zz{
public static void main(String[] arg){
int p=90;
int i=2;
int[] a=new int[10];
System.out.print("p的因数:");
while(i<90){
if(p%i==0){
p=p/i;
System.out.print(i+" ");
i=2;
}else{
i++;
}
}
System.out.print("\n");
}
}刚刚学习JAVA 我的程序要那边改进的
设定一个为90的数,然后再定义一个2,再定义一个字符串(temp)来存储质因数
接着使用while循环来做
用IF来判断,如果90除余2等于0,那么就执行90除以2,然后把这个结果存进一个临时的变量,把得出的质因数存进temp里。否则2+1;
最后输出就行了!
package src;public class PrimeSub {
public static void main(String[] args) {
int num = 100;
String result = "90=";
int i = 2;
while(num >=i){
if(num % i == 0) {
result += i + "*";
num /= i;
} else
i ++;
}
System.out.println(result.substring(0, result.length()-1));
}}