#|华为机试第六题(HJ6 质数因子)


华为机试第六题:HJ6 质数因子

  • 一、网址链接
  • 二、题目描述
      • ①描述
      • ②输入描述
      • ③输出描述
      • ④示例一
  • 三、代码实现
      • ①Java代码实现
      • ②C++代码实现
      • ③C代码实现

一、网址链接 【#|华为机试第六题(HJ6 质数因子)】牛客----https://www.nowcoder.com/ta/huawei
二、题目描述 ①描述
功能:输入一个正整数,按照从小到大的顺序输出它的所有质因子(重复的也要列举)(如180的质因子为2 2 3 3 5 )
数据范围:1<=n<=2*10 9+14
②输入描述
输入一个整数
③输出描述
按照从小到大的顺序输出它的所有质数的因子,以空格隔开。
④示例一
输入: 180
输出: 2 2 3 3 5
三、代码实现 ①Java代码实现
import java.io.BufferedReader; import java.io.IOException; import java.io.InputStreamReader; public class Main {public static void main(String[] args) throws IOException { BufferedReader bufferedReader = new BufferedReader(new InputStreamReader(System.in)); String str; while ((str = bufferedReader.readLine()) != null) { int number = Integer.parseInt(str); StringBuffer sb = new StringBuffer(); for (int i = 2; i <= Math.sqrt(number); i++) { if (number % i == 0) { sb.append(i).append(" "); number = number / i; i--; } } sb.append(number).append(" "); System.out.println(sb.toString()); } } }

②C++代码实现
#include #include using namespace std; int main(){ long long n; cin>>n; long long s=sqrt(n); for(long long i=2; i<=s; i++){ while(n%i==0){ cout<

③C代码实现
#include int main(void){ int n; while(scanf("%d", &n) == 1){ int tmp = n; for(int i = 2; i * i <= tmp && n >= i; i++){ while(n % i == 0){ printf("%d ", i); n /= i; } } if(n - 1) printf("%d ", n); putchar('\n'); } return 0; }

    推荐阅读