Java显示数字的素数分解
因此,对于我的作业,我必须编写一个程序,要求用户输入一个整数,然后打印出该数字的素数分解。 这就是我所拥有的:Java显示数字的素数分解,java,factorization,Java,Factorization,因此,对于我的作业,我必须编写一个程序,要求用户输入一个整数,然后打印出该数字的素数分解。 这就是我所拥有的: import java.util.Scanner; public class PrimeFactor { public static void main(String[] args) { System.out.print("Enter a positive number: "); Scanner scanner = new Scanner (S
import java.util.Scanner;
public class PrimeFactor {
public static void main(String[] args) {
System.out.print("Enter a positive number: ");
Scanner scanner = new Scanner (System.in);
int number = scanner.nextInt();
int count;
for (int i = 2; i<=(number); i++) {
count = 0;
while (number % i == 0) {
number /= i;
count++;
if (count == 0) {
continue;
}
}
System.out.println(i+ "**" + count);
}
}
}
import java.util.Scanner;
公共类素数因子{
公共静态void main(字符串[]args){
System.out.print(“输入正数:”);
扫描仪=新的扫描仪(System.in);
int number=scanner.nextInt();
整数计数;
对于(int i=2;i你很接近:
System.out.println语句必须位于for循环内,并且仅显示forcount>0
删除如果(count==0){continue;}
,它就没用了,因为您刚刚增加了count
就快到了!将if continue
块移到for
循环的外部。否则,它将“继续”最内部的循环,而不是您想要的循环
while (number % i == 0) {
number /= i;
count++;
}
if (count == 0) {
continue;
}
System.out.println(i+ "**" + count);
或者,如果(count!=0)
,您可以将System.out.println
调用包含在中,因为它是continue
后面的唯一语句:
while (number % i == 0) {
number /= i;
count++;
}
if (count != 0) {
System.out.println(i+ "**" + count);
}
ideone上的程序:。从while循环中删除if(count==0){continue;}语句,并将其放在for循环的后面。:)
for(int i=2;i不确定为什么要打印两次乘法!以下是清理后的代码:
public static void printPrimeNumbers(int prime) {
int n;
for (int i = 2; i <= prime; i++) {
n = 0;
while (prime % i == 0) {
prime /= i;
n++;
}
if (n != 0) {
for (int j = n; j > 0; j--) {
System.out.print(i);
if (prime != 1) {
System.out.print("*");
}
}
}
}
}
公共静态空打印素数(int素数){
int n;
对于(int i=2;i 0;j--){
系统输出打印(一);
如果(素数!=1){
系统输出打印(“*”);
}
}
}
}
}
您也可以从下面的功能中获得一些帮助
public int getPrimeNumber(double number) {
int j = 0;
while (number % 2 == 0) {
number = number / 2;
j = 2;
}
for (int i = 3; i <= number; i = i + 2) {
while (number % i == 0) {
number = number / i;
j = i;
}
}
return j == 0 ? 1 : j;
}
public int getPrimeNumber(双倍数字){
int j=0;
而(数字%2==0){
数量=数量/2;
j=2;
}
对于(inti=3;i首先,您的continue
在while循环中,在该循环中没有任何效果
public class PrimeFactor {
public static void main(String[] args) {
System.out.print("Enter a positive number: ");
Scanner scanner = new Scanner (System.in);
int number = scanner.nextInt();
int count;
for (int i = 2; i<=(number); i++) {
count = 0;
while (number % i == 0) {
number /= i;
count++;
}
if (count == 0) {
continue;
}
System.out.println(i+ "**" + count);
}
}
}
public class\u 03\u最大的基本要素{
公共静态void main(字符串[]args){
长a=600851475143L;
对于(int i=2;i 1)
System.out.println(“最大素因子:+a”);
}
}
控制台:
8462696833 x 71
10086647 x 839
6857 x 1471
最大素数:6857你能使用递归、函数、库类吗?只需要知道你在这里可以使用什么。这个continue
语句不会经常执行…详细解释一下
public class PrimeFactor {
public static void main(String[] args) {
System.out.print("Enter a positive number: ");
Scanner scanner = new Scanner (System.in);
int number = scanner.nextInt();
int count;
for (int i = 2; i<=(number); i++) {
count = 0;
while (number % i == 0) {
number /= i;
count++;
}
if (count == 0) {
continue;
}
System.out.println(i+ "**" + count);
}
}
}
public class PrimeFactor {
public static void main(String[] args) {
System.out.print("Enter a positive number: ");
Scanner scanner = new Scanner (System.in);
printFactors(scanner.nextInt());
}
public static void printFactors(int product) {
for (int factor = 2; factor <= product; factor++) {
int exponent = 0;
while (product % factor == 0) {
product /= factor;
exponent++;
}
if (exponent > 0) {
System.out.println(factor+ "**" + exponent);
}
}
}
}
public class _03_LargestPrimeFactor {
public static void main(String[] args) {
long a = 600851475143L;
for(int i=2; i<(a/i); i++){ // no factors would exist beyond a/i for a particular i
while( a%i == 0){ // if i is a factor
a = a/i; // divide a by i else we wont get a prime number
System.out.print(a + " x " + i + "\n");
}
}
if(a > 1)
System.out.println("largest prime factor: " + a);
}
}