思想很简单,输入为n,从2到n遍历,如果n能整除i则输出一个i,并让n=n/i
import java.util.Scanner;
public class Main {
public static void main(String[] args) {
Scanner input = new Scanner(System.in);
int n=input.nextInt();
int first = 0;
input.close();
System.out.print(n);
for(int i=2; i<n; i++) {
while(n%i == 0) {
n /= i;
if(first == 0) {
System.out.print("=");
first = 1;
}
else {
System.out.print("*");
}
System.out.print(i);
}
if(n==1)break;
}
}
}
但是写完代码发现总是缺少最后一个质因数,也就是11行当n=5,i=5时没有进入while,难道5%5不等于0???
然而我试了下是等于0,我用c语言也试了下,结果是可以的。
#include<stdio.h>
int main(){
int n;
scanf("%d", &n);
printf("%d", n);
int first = 0;
for(int i=2; i<=n; i++) {
while(n%i == 0) {
n /= i;
if(first == 0) {
printf("=");
first = 1;
}
else {
printf("*");
}
printf("%d", i);
}
}
}
为什么Java就不行,上网搜了一下也没有解答。最后只能做如下改动:
import java.util.Scanner;
public class Main {
public static void main(String[] args) {
Scanner input = new Scanner(System.in);
int n=input.nextInt();
int first = 0;
input.close();
System.out.print(n);
for(int i=2; i<n; i++) {
while(n%i == 0) {
n /= i;
if(first == 0) {
System.out.print("=");
first = 1;
}
else {
System.out.print("*");
}
System.out.print(i);
}
}
System.out.print("*"+n);
}
}
专门输出一下最后一个质因数。