• 蓝桥杯 质因数2 分解质因数


    问题描述
    将一个正整数N(1<N<32768)分解质因数,把质因数按从小到大的顺序输出。最后输出质因数的个数。
    输入格式
      一行,一个正整数
    输出格式
      两行,第一行为用空格分开的质因数
      第二行为质因数的个数
    样例输入
    66
    样例输出
    2 3 11
    3
    样例输入
    90
    样例输出
    2 3 3 5
    4
    样例输入
    37
    样例输出
    37
    1
    目前为止,质数,因数的问题,遇到一次错一次。
    错误的第一版代码。
     1 #include <bits/stdc++.h>
     2 using namespace std;
     3 int main() {
     4     int n;
     5     cin >> n;
     6     int cnt = 0;
     7     int t = n;
     8     for (int i = 2; i < t; i++) {
     9         if (n % i == 0) {
    10             cout << i << " ";
    11             n /= i;
    12             cnt++;
    13         }
    14     }
    15     cout << endl << cnt << endl;
    16     return 0;
    17 }

    输入66的话可以正确输出,但是输入90的话,就会这样

     因为在第一版代码中,每一次i都要自增,所以同一个因子只能输出一次。

    改为这样就好了,每一次都是从2开始。

    AC的第二版代码

     1 #include <bits/stdc++.h>
     2 using namespace std;
     3 int main() {
     4     int n;
     5     cin >> n;
     6     int cnt = 0;
     7     while (n != 1) {
     8         for (int i = 2; i <= n; i++) {
     9             if (n % i == 0) {
    10                 cout << i << " ";
    11                 cnt++;
    12                 n = n / i;
    13                 break;
    14             }
    15         }
    16     }
    17     cout << endl << cnt;
    18     return 0;
    19 }
  • 相关阅读:
    五:系统及数据库
    四:WEB源码扩展
    三:搭建安全拓展
    二:数据包扩展
    一:基础入门-概念名词
    LeetCode 11. Container With Most Water
    LeetCode 263. Ugly Number
    LeetCode 10. Regular Expression Matching
    LeetCode 58. Length of Last Word
    LeetCode 53. Maximum Subarray
  • 原文地址:https://www.cnblogs.com/fx1998/p/12740638.html
Copyright © 2020-2023  润新知