蓝桥杯某C语言算法题解决方案(质因数分解)

news/2024/11/23 21:34:07/

蓝桥杯原题:将一个正整数分解质因数例如:输入90,打印出90 = 2 * 3 * 3 * 5。


声明:该题目是否为蓝桥杯原题未知,我是从CSDN上面查到的,仅对该题目进行解决。

这个题与我之前发表过的一些关于检验一个数字是否为素数(质数)的项目相关性极大,如果我们要对一个数字进行质因数分解,首先我们要直到它可能会有哪些质因数。我们必须意识到,如果一个数字是它的因数,那么这个数字一定小于它。因此,它的质因数也一定会小于它。

这就给了我们突破口,首先我们要找到一些“候选素数(Candidates)”,也就是只要这些数字是素数,并且比我们需要检验的数字小,那么它们就有可能是它的质因数,也就是我们所属的候选素数。

单单找到这些素数还不行,我们还需要把他们存储起来以备后面检验它们是否是“真质因数(True prime factors)”

我必须提示大家,我这次写的项目并非最简单的方法,事实上,我们可以不用数组保存这些候选素数,而是直接在每个素数被找到之后立刻进行判断并且输出,这样会更简单一些。但是我这次不会给你展示这种方法,我展示的是使用了数组的方法,之后我会给出我提到的这个更好的方案,然而这次,我们要解释这个比较容易理解的方案

下面我们展示完整的代码:

//从2开始第500个素数是3571,因此本程序的arr_store最大储存3571,因此是有数据限制的。
// 基于以上原因,请不要尝试过大的数字。
#define _CRT_SECURE_NO_WARNINGS
#include<stdio.h>
void judPrime(int put,int arr[],int* y) {int a = put - 1; int trial = 0;for (a = put - 1; a > 0; a--) {if ((put % a == 0)&&(a!=1)) {trial++;}else if (a == 1) {}}if (trial == 0) {arr[*y] = put;*y=*y+1;}
}
int main()
{int input = 0; int judge = 0;int x = 2; int arr_store[500] = { 0 };int y = 0; int* py = &y;printf("请输入你要质数分解的数字:");scanf("%d", &input);for (x = 2; x < input; x++) {if (input % x == 0) {judge++;}}x = 2;if (judge == 0) {printf("输入的数字是素数,其质因数分解结果为:%d*1", input);}else {for (x = 2; x < input; x++) {judPrime(x, arr_store,py);}x = 0;while (arr_store[x] != 0) {if (input % arr_store[x] == 0) {printf("%d*", arr_store[x]);input /= arr_store[x];x++;}else {x++;}}printf("%d", input);}return 0;
}

由于我对数组arr_store的大小规定为500,因此我们最多能存下第500个质数,这就导致我们能判断的数字对象事实上是有限制的,一定会有一个比较大或者特殊的数超出我们能判断的范围,之后我会尝试给出不受这种限制的代码,虽然目前我还没有什么很好的头绪。


http://www.ppmy.cn/news/1549370.html

相关文章

iOS无人直播虚拟视频实用版

iOS无人直播虚拟视频实用版 资源描述 本资源提供了一个名为“iOS无人直播虚拟视频实用版”的资源文件&#xff0c;该文件允许用户在iOS设备上实现无人直播功能&#xff0c;通过虚拟视频技术播放指定的视频内容。该资源文件特别适用于需要进行刷脸验证的场景&#xff0c;用户可…

windows已建立威胁IP排查

在应急响应的时候&#xff0c;需要筛选出服务器建立连接的进程、PID&#xff0c;此代码可满足该需求实现共计2步 首先windos netstat-ano > all.txt&#xff0c; 上传至pycharm路径 第一步获取服务器建立连接的ip import re# 从文件读取 netstat 输出 def read_netstat_f…

【Flask+Gunicorn+Nginx】部署目标检测模型API完整解决方案

【Ubuntu 22.04FlaskGunicornNginx】部署目标检测模型API完整解决方案 文章目录 1. 搭建深度学习环境1.1 下载Anaconda1.2 打包环境1.3 创建虚拟环境1.4 报错 2. 安装flask3. 安装gunicorn4. 安装Nginx4.1 安装前置依赖4.2 安装nginx4.3 常用命令 5. NginxGunicornFlask5.1 ng…

干货分享|分布式数据科学工具 Xorbits 的使用

本章介绍分布式数据科学工具 Xorbits 。 1 Xorbits Data Xorbits Data 是一个面向数据科学的分布式计算框架&#xff0c;功能类似于 Dask 和 Modin&#xff0c;用于加速 Pandas DataFrame 和 NumPy。Xorbits Data 通过切分大数据集并利用 Pandas 或 NumPy 执行操作。其底层采…

java Queue 详解

Java Queue 详解 Queue 是 Java 集合框架中用于实现 队列 数据结构的接口&#xff0c;位于 java.util 包中。队列是一种 先进先出&#xff08;FIFO&#xff09; 的数据结构&#xff0c;元素按照插入的顺序依次出队。 1. Queue 的基本特性 FIFO&#xff08;First-In-First-Out&…

鸿蒙学习高效开发与测试-应用程序框架和HarmonyOS SDK(3)

文章目录 1、应用程序框架1、规范化后台进程管理2、原生支持分布式3、支持多设备的统一窗口管理4、 组件共享及面向对象5、逻辑与界面解耦6、灵活扩展机制2、HarmonyOS SDK1、 开放能力 Kit2、开放能力的检索和使用3、 方舟工具链4、前端编译器架构1、应用程序框架 应 用 程 序…

基于 RBF 神经网络辨识的单神经元 PID 模型参考自适应控制

这是一个基于 RBF 神经网络辨识 和 单神经元 PID 模型参考自适应控制 的系统框图&#xff0c;包含以下主要部分&#xff1a; RBF 神经网络模块&#xff1a;用于对系统进行辨识&#xff0c;输入误差 e(t)e(t)e(t) 和误差变化量 Δe(t)\Delta e(t)Δe(t)&#xff0c;输出与系统特…

【实用技能】使用 TX Text Control 创建带有嵌入式附件的 PDF 文档

TX Text Control .NET Server for ASP.NET&#xff08;下载试用最新版&#xff09;是一款Web应用程序的文档处理控件&#xff0c;包括用于 ASP.NET、ASP.NET Core 和 Angular 的文档编辑和查看的客户端包。目前TX Text Control .NET Server for ASP.NET 支持 .NET 5、.NET 6 和…