带计数器的独特分解
Unique factorization with counter
我正在尝试在 JAVA 中构建一个程序,它使用唯一因式分解定理。
我的意思是,从用户那里得到一个大于 1 的数字,然后用一个计数器打印所有唯一的因式分解。
例如,对于 100,输出应该是
2 2
5 2
因为 100=2*2*5*5
对于 23,输出应该是
23
如果输入为 6,则输出为
2
3
最后一个例子,对于 8112,输出应该是
2 4
3
13 2
到目前为止,我实现了一个代码,它给出了第一列并纠正了素数。但是当计数器> 1打印第二列时我没有成功计数。
我的代码如下:
int n = scanner.nextInt();
int num = 2;
while (num <= n) {
int i = 2;
boolean isPrime = true;
while (i < num && isPrime) {
if (num % i == 0) {
isPrime = false;
}
i++;
}
if (isPrime) {
int counter = 1;
if (n % num == 0) {
System.out.println(num);
}
}
num++;
}
知道我遗漏了什么吗?
您的counter
尚未实施。
int n = scanner.nextInt();
int num = 2;
while (num <= n) {
int i = 2;
boolean isPrime = true;
while (i < num && isPrime) {
if (num % i == 0) {
isPrime = false;
}
i++;
}
if (isPrime) {
int counter = 0;
while (n >= num && n % num == 0) {
counter++;
n /= num;
}
if (counter == 1) {
System.out.println(num);
}
else if (counter > 1) {
System.out.println(num + " " + counter);
}
}
num++;
}
找到号码后,还要继续寻找那个的计数器。以下是我的解决方案。
int ounter = 0;
if (n % num == 0) {
System.out.print(num);
int n1 = n;
while(n1%num == 0) {
ounter ++;
n1 = n1/num;
}
if(ounter != 1) {
System.out.println(" "+ounter);
}
}
我正在尝试在 JAVA 中构建一个程序,它使用唯一因式分解定理。 我的意思是,从用户那里得到一个大于 1 的数字,然后用一个计数器打印所有唯一的因式分解。
例如,对于 100,输出应该是
2 2
5 2
因为 100=2*2*5*5
对于 23,输出应该是
23
如果输入为 6,则输出为
2
3
最后一个例子,对于 8112,输出应该是
2 4
3
13 2
到目前为止,我实现了一个代码,它给出了第一列并纠正了素数。但是当计数器> 1打印第二列时我没有成功计数。
我的代码如下:
int n = scanner.nextInt();
int num = 2;
while (num <= n) {
int i = 2;
boolean isPrime = true;
while (i < num && isPrime) {
if (num % i == 0) {
isPrime = false;
}
i++;
}
if (isPrime) {
int counter = 1;
if (n % num == 0) {
System.out.println(num);
}
}
num++;
}
知道我遗漏了什么吗?
您的counter
尚未实施。
int n = scanner.nextInt();
int num = 2;
while (num <= n) {
int i = 2;
boolean isPrime = true;
while (i < num && isPrime) {
if (num % i == 0) {
isPrime = false;
}
i++;
}
if (isPrime) {
int counter = 0;
while (n >= num && n % num == 0) {
counter++;
n /= num;
}
if (counter == 1) {
System.out.println(num);
}
else if (counter > 1) {
System.out.println(num + " " + counter);
}
}
num++;
}
找到号码后,还要继续寻找那个的计数器。以下是我的解决方案。
int ounter = 0;
if (n % num == 0) {
System.out.print(num);
int n1 = n;
while(n1%num == 0) {
ounter ++;
n1 = n1/num;
}
if(ounter != 1) {
System.out.println(" "+ounter);
}
}