[PTA] 分解质因子

 输入一个正整数n(1≤n≤1e15),编程将其分解成若干个质因子(素数因子)积的形式。

输入格式:

任意给定一个正整数n(1≤n≤1e15)。

输出格式:

将输入的正整数分解成若干个质因子积的形式,质因子的出现顺序按从小到大排列。如:40=2*2*2*5;如果整数本身为质数或素数,直接输出,如:13=13。

输入样例:

在这里给出一组输入。例如:

输出样例:

在这里给出相应的输出。例如:

/*注:这道题我在一开始中犯了一个很严重的错误,但并不是出在递归中,朋友可以看看
我错误的地方,也算一点经验,不然有可能像我一样写到破防哦!*/#include<stdio.h>
#include<math.h>        //后面会用到sqrt()所以需要<math.h>
int A[10000] = { 0 };   //存放递归所得到的数
long int digui(long int num, int count);//被调函数:实现递归
//因为时1e15所以需要用到long int类型,当然也可以用unsigned long int
int panduan(int a);//被调函数:判断是否为素数
int main()
{long int n = 0;scanf("%ld", &n);int count = digui(n, 0);printf("%d=", n);for (int i = 0; i < count-1; i++){printf("%d*", A[i]);}printf("%d", A[count-1]);
}
long int digui(long int num, int count)
{int i = 2;if (num!=1){if (num % i != 0){do{i++;} while (((num % i )!= 0)||(panduan(i)==0));
/*我的错误就是这里:之前我在while中的写法是((num % i )!= 0)&&(panduan(i)==0)
其实但看((num % i )!= 0)和(panduan(i)==0)是没有问题的前者表示不能除尽的需要
进入循环,后者表示除数不是素数的也需要进入循环,问题在哪里呢?就是不能用与(&&)
连接,这表示必须两者只要满足其一就可以跳出循环,而用或(||)才表示需要两者同时满
足才可以跳出循环*/A[count] = i;count++;digui(num / i, count);
//这个递归相对来说比较简单,就是每次调用实现一次找到可以分离的素数}else{A[count] = 2;count++;digui(num / 2, count);}}else{return count;//count计数,方便后面for循环输出知道需要重复多少次}
}
int panduan(int a)//这是一个时间复杂度比较简单的判断素数方法
{for (int i = 2; i <= sqrt(a); i++){int yu = a % i;if (yu == 0){return 0;//非素数break;}}return 1;//为素数
}

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.hqwc.cn/news/522423.html

如若内容造成侵权/违法违规/事实不符,请联系编程知识网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

Spring学习 基础(二)Bean和AOP

3、Spring Bean Bean 代指的就是那些被 IoC 容器所管理的对象&#xff0c;我们需要告诉 IoC 容器帮助我们管理哪些对象&#xff0c;这个是通过配置元数据来定义的。配置元数据可以是 XML 文件、注解或者 Java 配置类。 Bean的创建方式 1. XML 配置文件&#xff1a; 传统上&am…

2024蓝桥杯每日一题(前缀和)

一、第一题&#xff1a;壁画 解题思路&#xff1a;前缀和贪心枚举 仔细思考可以发现B值最大的情况是一段连续的长度为n/2上取整的序列的累加和 【Python程序代码】 import math T int(input()) for _ in range(1,1T):n int(input())s input()l math.ceil(len(s)/…

DeepLearning in Pytorch|我的第一个NN-共享单车预测

目录 概要 一、数据准备 导入数据 数据可视化 二、设计神经网络 版本一 版本二&#xff08;正片&#xff09; 三、测试 小结 概要 我的第一个深度学习神经网络模型---利用Pytorch设计人工神经网络对某地区租赁单车的使用情况进行预测 输入节点为1个&#xff0c;隐含…

AI数据分析软件-BeepBI的诞生结束了传统BI时代,引领了数据分析零门槛的时代

#AI数据分析# 随着人工智能(AI)的日益成熟&#xff0c;数据分析领域正迎来一场革命性的变革。在这场变革中&#xff0c;DeepBI凭借实现了用ai数据分析&#xff0c;与传统BI工具相比&#xff0c;展现出了前所未有的便捷性和易上手特性&#xff0c;真正实现了数据分析的零门槛。…

机器学习笔记 计算机视觉中的测距任务常见技术路线

一、计算机视觉中的测距任务 测距是计算机视觉中的一项关键任务,涉及测量物体和相机之间的距离。这些信息可用于多种应用,包括机器人、自动驾驶汽车和增强现实。测距技术有很多种,包括主动式和被动式,每种技术都有自己的优点和局限性。主动测距技术,例如飞行时间、结构光和…

动态规划DP之背包问题3---多重背包问题

目录 DP分析&#xff1a; 优化&#xff1a; 二进制优化 例题&#xff1a; 01背包是每个物品只有一个&#xff0c;完全背包问题是每个物品有无限个。 那么多重背包问题就是 每个物品有有限个。 有 N 种物品和一个容量是 V 的背包。 第 i 种物品最多有 si 件&#xff0c;每件体…

IDS入侵检测知识整理及lDS入侵检查表

【IDS入侵检测知识整理及lDS入侵检查表】 1. 网络入侵检测IDS概念 2. IDS分类 3. IDS的工作原理 4. IDS在网络中的部署 5. 入侵检查表 项目建设全套资料获取通道&#xff1a;软件开发全套资料_数字中台建设指南-CSDN博客

Java | vscode如何使用命令行运行Java程序

1.在vscode中新建一个终端 2.在终端中输入命令 输入格式&#xff1a; javac <源文件>此命令执行后&#xff0c;在文件夹中会生成一个与原java程序同名的.class文件。然后输入如下命令&#xff1a; java <源文件名称>这样java程序就运行成功了。&#x1f607;

C++指针(四)万字图文详解!

个人主页&#xff1a;PingdiGuo_guo 收录专栏&#xff1a;C干货专栏 前言 相关文章&#xff1a;C指针&#xff08;一&#xff09;、C指针&#xff08;二&#xff09;、C指针&#xff08;三&#xff09; 本篇博客是介绍函数指针、函数指针数组、回调函数、指针函数的。 点赞破六…

力扣hot100题解(python版55-59题)

55、全排列 给定一个不含重复数字的数组 nums &#xff0c;返回其 所有可能的全排列 。你可以 按任意顺序 返回答案。 示例 1&#xff1a; 输入&#xff1a;nums [1,2,3] 输出&#xff1a;[[1,2,3],[1,3,2],[2,1,3],[2,3,1],[3,1,2],[3,2,1]]示例 2&#xff1a; 输入&…

植物病害识别:YOLO甘蔗叶片病害识别分类数据集

YOLO甘蔗叶片病害识别数据集, 包含尾孢菌叶斑病&#xff0c;眼斑病&#xff0c;健康&#xff0c;红腐病&#xff0c;锈病&#xff0c;黄叶病6个常见病类别&#xff0c;3300多张图像&#xff0c;yolo标注完整&#xff0c;全部原始图像&#xff0c;未应用增强。 适用于CV项目&…

VSCode国内镜像下载方法

VSCode国内镜像下载方法&#xff1a; 找到下载界面&#xff0c;点击下载后&#xff0c;发现下载速度非常慢。 复制下载链接&#xff0c;然后替换图中画线部分&#xff1a; 改为&#xff1a;vscode.cdn.azure.cn 然后将链接粘贴到浏览器回车&#xff0c;会发现嗖的一下就好了