趣味算法------可截断素数

news2024/9/22 21:30:22


目录

题目描述:

思路解析:

质数判断函数:

反转函数:

右截断素数判断函数:

左可截断素数:

具体代码:


题目描述:


左截断素数是不包含 0 位的素数,当连续删除第一个数字时,结果始终为素数。

可右截断的素数是不包含 0 位的素数,当连续删除最后一位时,结果始终为素数。

创建一个将整数作为参数的函数,并且:

如果整数只是一个可左截断的素数,则返回 "left"。
如果整数只是一个可右截断的素数,则返回 "right"。
如果整数是两者,则返回 "both"。
否则,返回 False。

输入输出格式
输入格式
输入一个整数;
输出格式
输出一个字符串,表示输入整数的素数类型。

输入输出样例1
输入
9137
输出
left
解释(可选)
因为9137 137 37 7都是质数。

输入输出样例2
输入
5939
输出
right
解释(可选)
因为5939 593 59和5都是素数。


思路解析:

        轻松的做法是一个功能定义一个函数,根据题干一个功能对应一个函数。

质数判断函数:

int check(int n)

{

    if (n < 2)

        return 0;

    else

        if (n == 2 || n == 3)

            return 1;

        else

            if (n % 6 != 1 && n % 6 != 5)

                return 0;

            else

            {

                int i = 5;

                while (i * i <= n)

                {

                    if (n % i == 0 || n % (i + 2) == 0)

                        return 0;

                    i += 6;

                }

            }

    return 1;

}

        这是一种快速判断一个数字是不是质数的函数,第一次使用是在如下文章:

循环结构------素数和_循环结构素数-CSDN博客

反转函数:

int turn(int n)
{
    int count = 0;
    while (n)
    {
        count = count * 10 + n % 10;
        n /= 10;
    }

    return count;
}//用于反转一个整数,例如123反转成321。

右截断素数判断函数:

int right(int n)
{
    while (n)
    {
        if (check(n))
            n /= 10;//每次进行一次质数判断便在右边截去一位。
        else
            return 0;
    }

    return 1;
}

左可截断素数判断函数:

​
int left(int n)
{
	while (n)
	{
		if (check(n))
		{
			n=turn(n);
			n /= 10;
			n=turn(n);
		}
		else
			return 0;
	}

	return 1;
}

​

      因为我们这次要截去数字的最高位,所以我们要将数字反转一次,截取反转后的最左边数字,然后再次反转数字,循环往复就能达到截取最高位的效果。


具体代码:

#include<stdio.h>
int check(int n)
{
	if (n < 2)
		return 0;
	else
		if (n == 2 || n == 3)
			return 1;
		else
			if (n % 6 != 1 && n % 6 != 5)
				return 0;
			else
			{
				int i = 5;
				while (i * i <= n)
				{
					if (n % i == 0 || n % (i + 2) == 0)
						return 0;
					i += 6;
				}
			}
	return 1;
}
int turn(int n)
{
	int count = 0;
	while (n)
	{
		count = count * 10 + n % 10;
		n /= 10;
	}

	return count;
}
int right(int n)
{
	while (n)
	{
		if (check(n))
			n /= 10;
		else
			return 0;
	}

	return 1;
}
int left(int n)
{
	while (n)
	{
		if (check(n))
		{
			n=turn(n);
			n /= 10;
			n=turn(n);
		}
		else
			return 0;
	}

	return 1;
}
int main(void)
{
	int n;
	scanf("%d", &n);

	int right_flag = right(n);
	int left_flag = left(n);

	if (right_flag && left_flag)
		printf("both");
	else if (right_flag)
		printf("right");
	else if (left_flag)
		printf("left");
	else
		printf("False");
}

        如此就完成了这道题目。

备注:

        以这种方式来完成这道题实际上运行的时候多了很多步骤,但是这样写能很容易让基础差点的同学快速领会,更重要的是在趣味算法篇章中,我更想用轻松有意思易看懂的方法来讲述和解决问题。

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

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

大四生都在的用8款AI论文生成器在线网站!

在当前的AI技术浪潮中&#xff0c;智能AI写作工具已经成为了学术研究和论文撰写的重要助手。对于大四生来说&#xff0c;选择合适的AI论文生成器可以大大提高写作效率和质量。以下是8款值得推荐的AI论文生成器在线网站&#xff1a; 一、千笔-AIPassPaPer 这是一款功能全面且高…

花几千上万学习Java,真没必要!(四十六)

Lambda表达式&#xff1a; 测试代码1&#xff1a; package test.lambda; public class LambdaDemo { // 实现Runnable接口的类 static class MyThread implements Runnable { Override public void run() { System.out.println("线程运行中&#xff1a;通过实现Runn…

【智能流体力学】ANSYS Fluent流体仿真基础、深度学习驱动思想及其CAX计算机辅助集成技术

目录 一、CAX计算机辅助集成技术二、计算机辅助工程(CAE)三、SCDM (Species Concentration Display Model) 显示和分析物质浓度分布的模型1. **SCDM概述**2. **主要功能**3. **功能特点**4. **使用步骤**5. **应用实例**6. **优点与限制**四、行业应用五、Fluent 软件功能1. …

Datawhale AI 夏令营 第四期 AIGC Task2

活动简介 活动链接&#xff1a;Datawhale AI 夏令营&#xff08;第四期&#xff09; 以及AIGC里面的本次任务说明&#xff1a;Task 2 精读代码&#xff0c;实战进阶 和上次任务一样&#xff0c;链接里的教程非常详细&#xff0c;对小白非常友好&#xff0c;从使用AI助手理解…

网工内推 | 网络、集成工程师,最高17K,NP以上认证优先

01 广东南方新媒体股份有限公司 &#x1f537;招聘岗位&#xff1a;网络工程师 &#x1f537;岗位职责&#xff1a; 1、负责基础设施运维管理&#xff0c;包括机房环境设备、网络设备、安全设备与服务器等&#xff0c;负责机房设备上架、下架、位置调整、布线等的常规操作。…

day36——homework

二、基于UDP的TFTP文件传输 1&#xff09;tftp协议概述 简单文件传输协议&#xff0c;适用于在网络上进行文件传输的一套标准协议&#xff0c;使用UDP传输 特点&#xff1a; 是应用层协议 基于UDP协议实现 数据传输模式 octet&#xff1a;二进制模式&#xff08;常用&am…

数据同步工具DataX

目录 1.概要 2.简介 3.DataX处理异构数据源 4.DataX的框架 5.DataX的核心架构 6.DataX的安装 7.DataX的使用案例 8.mysql同步到mysql案例 1.概要 本篇文件将介绍一款数据同步工具DataX的原理&#xff0c;安装&#xff0c;以及使用。 2.简介 官网连接&#xff1a;https…

STL经典案例(二)——公司招员工

需求&#xff1a;公司招了十个员工ABCDEFGHIJ&#xff0c;公司有五个部门&#xff0c;公司随机给这十个员工分配薪水&#xff0c;并且随机将这十名员工分配到不同的部门。 员工类中成员属性为姓名和工资&#xff0c;成员方法为设置姓名、设置工资、获得姓名、获得工资 部门有五…

Electron 开发桌面应用程序用于对接USB Audio Class协议

开发用于对接USB Audio Class协议的Electron桌面应用程序是一个复杂的任务&#xff0c;可能涉及多个开源库和项目的组合。以下是一些开源项目和库&#xff0c;它们可以帮助你实现这个目标&#xff1a; 1. Electron Electron 是一个用于构建跨平台桌面应用程序的框架。你可以使…

【云原生】Prometheus Pushgateway使用详解

目录 一、前言 二、Pushgateway概述 2.1 什么是Pushgateway 2.1.1 Pushgateway在Prometheus中的位置 2.2 为什么需要Pushgateway 2.3 Pushgateway作用 2.4 Pushgateway 工作原理 2.5 Pushgateway 使用场景 2.6 Pushgateway 优缺点 三、Pushgateway 部署 3.1 二进制安…

[C#]基于C# winform结合llamasharp部署llama3中文的gguf模型

【llmasharp源码】 https://github.com/SciSharp/LLamaSharp 【测试模型】 https://www.modelscope.cn/pooka74/LLaMA3-8B-Chat-Chinese-GGUF.git 【测试通过环境】 vs2019 netframework4.7.2 llamasharp0.15.0 cuda11.7.1cudnn8.8.0 注意测试发现使用cpu推理非常卡&a…

Stable Diffusion绘画 | ControlNet应用-SoftEdge(软边缘):让转绘更柔和

SoftEdge(软边缘) Canny(硬边缘) 有时候捕捉的细节过多&#xff0c;其实有时候并不需要那么多的细节。 例如下图中&#xff0c;围巾上的网格细节全部都被捕捉下来了&#xff1a; 切换到「SoftEdge(软边缘)」&#xff0c;它只重点抓取轮廓边缘&#xff0c;而且线条会比 Canny …

优购电商小程序的设计

管理员账户功能包括&#xff1a;系统首页&#xff0c;个人中心&#xff0c;用户管理&#xff0c;商品分类管理&#xff0c;商品信息管理&#xff0c;留言板管理&#xff0c;订单管理&#xff0c;系统管理 微信端账号功能包括&#xff1a;系统首页&#xff0c;商品信息&#xf…

入门 PyQt6 看过来(项目)26 在线购物-主页面

功能导航页面很简单&#xff0c;就几个按钮功能。效果如下图&#xff1a; 1 主界面 ​ 包含 “商品选购”、”下单结算“、”销售分析“四个按钮以及“功能导航”标题。 2 工程目录 首先先创建工程目录及子目录&#xff1a; ​ 3 代码 主窗口文件为Main.py&#xff0c;其…

第2章 C语言基础知识

第2章 C语言基础知识 1.printf()函数 在控制台输出数据&#xff0c;需要使用输出函数&#xff0c;C语言常用的输出函数为printf()。 printf()函数为格式化输出函数&#xff0c;其功能是按照用户指定的格式将数据输出到屏幕上。 printf(“格式控制字符串”,[输出列表]); 格式控…

C++ 124类和对象_运算符重载_赋值

C 124类和对象_运算符重载_赋值 学习内容 解决自定义对象之间赋值是因析构函数重复释放内存时引发的异常问题 结果 代码 #include<iostream> using namespace std;//cout 在这里&#xff0c;没有它会报错//类和对象_运算符重载_赋值 //学习内容 //解决自定义对…

【Qt】Qt窗口 | 菜单栏QMenuBar

文章目录 一. 菜单栏二. 代码创建&使用菜单栏1. 创建菜单栏2. 在菜单栏中添加菜单3. 创建菜单项4. 在菜单项之间添加分割线5. 添加快捷方式6. 菜单/菜单项添加图标7. 添加子菜单 三. 图形化创建菜单栏 窗口 Qt 中窗口是通过QMainWindow类实现的 QMainWindow 是一个为用户提…

React使用useRef ts 报错

最近在写自己的React项目&#xff0c;我在使用useRef钩子函数的时候发现 TS2322: Type MutableRefObject<HTMLDivElement | undefined> is not assignable to type LegacyRef<HTMLDivElement> | undefined Type MutableRefObject<HTMLDivElement | undefined&g…

代码随想录算法训练营第十五天(一)| 110.平衡二叉树 (优先掌握递归)257. 二叉树的所有路径

110.平衡二叉树 题目&#xff1a; 给定一个二叉树&#xff0c;判断它是否是 平衡二叉树 示例 1&#xff1a; 输入&#xff1a;root [3,9,20,null,null,15,7] 输出&#xff1a;true示例 2&#xff1a; 输入&#xff1a;root [1,2,2,3,3,null,null,4,4] 输出&#xff1a;fa…

vuex的原理和使用方法

简介 Vuex 是 Vue.js 应用的状态管理模式&#xff0c;它为应用内的所有组件提供集中式的状态&#xff08;数据&#xff09;管理。可以帮我们管理 Vue 通用的数据 (多组件共享的数据)。 Vuex的构成 state&#xff1a;state 是 Vuex 的数据中心&#xff0c;也就是说state是用来…