题目描述
对于任一整数n,输出其所有的因子。
输入格式
输入共一行,一个整数n
输出格式
输出共一行,从小到大输出n的所有因数。
输入输出样例
输入 #1 复制
12
输出 #1 复制
1 2 3 4 6 12
说明/提示
1≤n≤10 18
#include<iostream>
#include<cmath>
using namespace std;
int main(){
long long n;
cin>>n;
int i;
long long k = (long long)sqrt(n);
for( i= 1;i<= k;i++){
if(n % i == 0){
cout<<i<<" ";
}
}
for(int j=k;j>=1;j--){
if(n % j == 0 && n/j != (i-1)){
cout<<n / j<<" ";
}
}
return 0;
}
Java题解
import java.util.ArrayList;
import java.util.Scanner;
public class Main {
public static void main(String[] args) {
Scanner scanner = new Scanner(System.in);
ArrayList<Long> list = new ArrayList<>();
long n = scanner.nextLong();
long m = (long) Math.sqrt(n);
long k,index = 0;
for(k=1;k<=m;k++){
if(n % k == 0){
System.out.print(k+" ");
list.add( (n/k));
}
}
if(m*m == n)
index = 1;
for(long i=list.size()-1-index;i>=0;i--){
System.out.print(list.get((int) i)+" ");
}
}
}