【蓝桥杯-筑基篇】基础数学思维与技巧(2)

news2024/11/24 19:52:23

🍓系列专栏:蓝桥杯

🍉个人主页:个人主页

目录

🍪1.判断素数🍪

🥦2.大整数🥦

🍋3.求n的约数个数🍋

🍉4.数学归纳法🍉

🍓5.阶乘之和🍓


 

🍪1.判断素数🍪

素数的定义

素数又称质数,一个大于1的自然数,除了1和它自身外,不能被其他自然数整除的数叫做素数,否则称为合数(规定1既不是素数也不是合数)

🍭方法1:

遍历从2到n-1的所有数字,判断是否有可以被n整除的数,如果没有,则为素数。

import java.util.Scanner;
public class A {
    public static void main(String[] args) {
        Scanner sc = new Scanner(System.in);
        System.out.println("请输入要判断的数字:");
        int n = sc.nextInt();
        int i = 0;
 
        for ( i = 2; i <= n-1 ; i++) {
            if(n % i == 0){
                System.out.println(n+"不是素数");
                break;
            }
        }
        if(i == n){
            System.out.println(n+"是素数");
        }
    }
}

🍭方法2:

判定的范围改为[2 -,n/2]。当 i>n/2 时,则判定为素数。

import java.util.Scanner;
public class A {
 
    public static void main(String[] args) {
        Scanner sc = new Scanner(System.in);
        System.out.println("请输入要判断的数字:");
        int n = sc.nextInt();
        int i = 0;
 
        for ( i = 2; i <= n/2 ; i++) {
            if(n % i == 0){
                System.out.println(n+"不是素数");
                break;
            }
        }
        if(i > n/2){
            System.out.println(n+"是素数");
        }
    }
}

🍭方法3:

在Java中判定素数的范围也可以到sqrt(n),(对n开平方)。对应的函数为:Math.sqrt(n)

	    public static void main(String[] args) {
            Scanner sc = new Scanner(System.in);
            System.out.println("请输入要判断的数字:");
        while(sc.hasNext()) {
            int n = sc.nextInt();
            int i = 2;
            for(;i <= Math.sqrt(n);i++){
                if(n % i == 0){
                    System.out.println(n+"不是素数");
                    break;
                }
            }
            if(i >Math.sqrt(n)){
                System.out.println(n+"是素数");
            }

        }
		
	}

🍭方法4:埃氏筛法

感兴趣的小伙伴看这篇文章

🍭方法5:欧拉筛法

感兴趣的小伙伴看这篇文章

🥦2.大整数🥦

在java中范围最大的基本数据类型是long,它可表示的范围是-263 ~ 263 -1。当我们遇到要表示的数超过了该范围时就必须使用BigInteger类。

比如我们要计算n的阶乘。

BigInteger类的创建:

BigInteger bigInteger = new BigInteger("1");

自定义进制:

BigInteger bigInteger = new BigInteger("1001",2);//2为二进制
	    	System.out.println(bigInteger);//输出9

BigInteger类的运算:

加法:

BigInteger a = new BigInteger("10");
BigInteger b = new BigInteger("2");
BigInteger add = a.add(b);// 加法
System.out.println(add);//12

减法:

BigInteger subtract = a.subtract(b); // 减法
System.out.println(subtract);//98

乘法:

BigInteger multiply = a.multiply(b); // 乘法
System.out.println(multiply);//200

除法:

BigInteger divide = a.divide(b); // 除法
System.out.println(divide);//50

取余:

BigInteger mod = a.mod(b); // 取余(只返回正数)
System.out.println(mod);//0

🍋3.求n的约数个数🍋

例如:求36 的约数

因为:1*36=36,2*18=36,3*12=36,4*9=36,6*6=36

故36的约数为:1,36,2,18,3,12,4,9,6

总共:9个

🍭方法1:暴力枚举

	    public static void main(String[] args) {
	    	Scanner scanner=new Scanner(System.in);
	    	while(scanner.hasNext()) {
	    		int n=scanner.nextInt();
	    		int count=0;
	    		for (int i = 1; i <= n; i++) {
					if(n%i==0) {
						count++;
					}
				}
	    		System.out.println(count);	
	    	}


	}

🍭方法2:

由原来i=1  到 i=n  列举 ,变为  i=1  到 i=n/2。

以36举例,36/2=18   18之后的 19 20  21 22 一直到35 都不是36的约数,只有36是。

故此 只需要求出   n/2之前的 约数数量 然后加1 即可。

图示:

 

	    public static void main(String[] args) {
	    	Scanner scanner=new Scanner(System.in);
	    	while(scanner.hasNext()) {
	    		int n=scanner.nextInt();
	    		int count=0;
	    		for (int i = 1; i <= n/2; i++) {
					if(n%i==0) {
						count++;
					}
				}
	    		System.out.println(count+1);	
	    	}


	}

🍉4.数学归纳法🍉

 嘿嘿嘿,和高中数学很像。

其核心思想:一个个列举,找出规律,然后用代码实现。

🍓5.阶乘之和🍓

输入一个数,判断这个数能不能用互不相等的非负整数的阶乘的和来表示,例如9=1!+2!+3!.

思路:

把0到10的阶乘都算出来 然后用数组存取,从10的阶乘开始,一直的比较然后不断的相减,看最后number 是否等于0,为0则是可以的,否则就不行。

	    public static void main(String[] args) {

	    	int arr[]= new int[10];//arr数组用于存阶乘
	    	int fac=1;
	    	for (int i = 1; i <=10; i++) {
				fac=fac*i;
				arr[i-1]=fac;
			}
//	    	System.out.println(Arrays.toString(arr));
	    	Scanner scanner=new Scanner(System.in);
	    	while(scanner.hasNext()) {
	    		int number=scanner.nextInt();
	    		
	    		if(number<0) {
					System.out.print("no");
				     break;
				}
	    		
	    		for (int i =arr.length-1 ; i >=0 ; i--) {
					
					if(number>=arr[i]) {
						number=number-arr[i];
					}
				
				}
	
				if(number==0) {
					System.out.println("yes");
				
				}
				else System.out.println("无解");
	    
	    	}
	    	


	}

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

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

相关文章

使用 typora软件 编写 markdown 写作的技巧

typora 编写 markdown 写作的技巧 作者&#xff1a;虚坏叔叔 博客&#xff1a;https://xuhss.com 早餐店不会开到晚上&#xff0c;想吃的人早就来了&#xff01;&#x1f604; 使用typora 编写 markdown 写作的时间久了后&#xff0c;会发现一些技巧 &#xff0c;分享给大家 …

LeetCode206_206. 反转链表

LeetCode206_206. 反转链表 一、描述 给你单链表的头节点 head &#xff0c;请你反转链表&#xff0c;并返回反转后的链表。 示例 1&#xff1a; 输入&#xff1a;head [1,2,3,4,5] 输出&#xff1a;[5,4,3,2,1]示例 2&#xff1a; 输入&#xff1a;head [1,2] 输出&…

结构体内存大小

000、前言 要想计算结构体内存大小&#xff0c;就会涉及到一个结构体内存对齐的问题&#xff0c;而不是对其成员进行简单的加运算 &#xff08;1&#xff09;在写本博客之前 有位同学和我讨论了一个学校的题目&#xff0c;题目如下&#xff1a; 我借这道题目问了另外一位同…

JS学习笔记day05(完结)!

今日内容 零、 复习昨日 一、作业 二、BOM 三、定时器 四、正则表达式 零、 复习昨日 事件 事件绑定方式鼠标事件 onmouseoveronmouseoutonmousemove 键盘事件 onkeydownonkeyuponkeypress 表单事件 onfocusonbluronchangeonsubmit 页面加载事件 onload dom dom树查找dom do…

what data contract

URLS 笔记内容主要来自 https://learn.microsoft.com/en-us/azure/cloud-adoption-framework/scenarios/cloud-scale-analytics/architectures/data-contracts Data contracts Data contracts are similar to service contracts or data delivery contracts.A contract also…

One-YOLOv5 v1.2.0发布:支持分类、检测、实例分割

One-YOLOv5 v1.2.0正式发布。完整更新列表请查看链接&#xff1a;https://github.com/Oneflow-Inc/one-yolov5/releases/tag/v1.2.0&#xff0c;欢迎体验新版本&#xff0c;期待你的反馈。 1 新版本特性 1. 同步了Ultralytics YOLOv5的上游分支v7.0&#xff0c;同时支持分类、目…

多校园SaaS运营智慧校园云平台源码 智慧校园移动小程序源码

智慧校园管理平台源码 智慧校园云平台源码 智慧校园全套源码包含&#xff1a;电子班牌管理系统、成绩管理系统、考勤人脸刷卡管理系统、综合素养评价系统、请假管理系统、电子班牌发布系统、校务管理系统、小程序移动端、教师后台管理系统、SaaS运营云平台&#xff08;支持多学…

每天学一点之Stream流相关操作

StreamAPI 一、Stream特点 Stream是数据渠道&#xff0c;用于操作数据源&#xff08;集合、数组等&#xff09;所生成的元素序列。“集合讲的是数据&#xff0c;负责存储数据&#xff0c;Stream流讲的是计算&#xff0c;负责处理数据&#xff01;” 注意&#xff1a; ①Str…

Java面试总结(六)

进程和线程的区别 根本区别&#xff1a; 进程时操作系统资源分配的基本单位&#xff0c;而线程是处理器任务调度和执行的基本单位。 资源开销&#xff1a; 每个进程都有自己独立的代码和数据空间&#xff08;程序上下文&#xff09;&#xff0c;进程之间的切换开销比较大&…

狂扫近300万读者,蟒蛇书升级版即将出版,招募审读人

狂扫全世界近 300 万爱好者成为编程领域的现象级爆品豆瓣累计超过 5000 人评价第2版中文版获得了 9.3 分的好评Amazon 近 10000 人评价第2版原版获得了 4.7 星好评毫不夸张&#xff0c;它是全世界读者心中的 Python 入门圣经因为封面上是一只蠢萌的蟒蛇这本书又被读者亲切地称为…

SQL注入——文件上传

目录 一&#xff0c;mysql文件上传要点 二&#xff0c;文件上传指令 一句话木马 三&#xff0c;实例 1&#xff0c;判断注入方式 2&#xff0c;测试目标网站的闭合方式&#xff1a; 3&#xff0c;写入一句话木马 4&#xff0c;拿到控制权 一&#xff0c;mysql文件上传…

【面试系列】volatile的底层原理

并发编程的三大特性 原子性可见性原子性 JAVA内存模型 Java内存模型&#xff08;Java Memory Model&#xff09;主要分为主内存和线程工作内存。 主内存&#xff1a;方法区和堆空间 线程工作内存&#xff1a;虚拟机栈&#xff0c;本地方法栈&#xff0c;程序计数器。 所有…

centos安装docker详细步骤

目录 一.前言 1.环境要求2.官网中文安装参考手册 二.安装步骤 1.卸载旧版本2.安装需要的软件包3.设置docker镜像源 1.配置docker镜像源 方式1&#xff1a;官网地址(外国)&#xff1a;方式2&#xff1a;阿里云源&#xff1a;2.查看配置是否成功 4.更新yum软件包索引5.可以查看…

C++ | 探究函数重载的原理:函数名修饰【基于Windows + Linux双系统】

文章目录一、前言【中国乒乓和中国男足】【文言文一词多义】二、函数重载概念引入1、参数【类型】不同构成重载2、参数【个数】不同构成重载3、参数【类型顺序】不同构成重载三、函数重载的原理1、回顾程序编译 链接的过程2、Linux下【objdump】查看反汇编3、Windows下反汇编查…

Maven安装与配置,IDEA配置Maven

文章目录1. 安装本地Maven2. 安装3. 配置环境变量4. 配置settings.xml文件5. IDEA配置1. 安装本地Maven 官网下载&#xff1a;https://maven.apache.org/download.cgi 2. 安装 把下载好的maven压缩包解压到一个没有中文&#xff0c;空格或其他特殊字符的文件夹&#xff0c;…

数据结构与算法基础(王卓)(15):KMP算法详解(含速成套路和详细思路剖析)

如果时间不够&#xff0c;急&#xff08;忙&#xff09;着应付考试没心思看&#xff0c;直接参考&#xff08;照抄&#xff09;如下套路&#xff1a; PART 1&#xff1a;关于next [ j ] PPT&#xff1a;P30 根据书上以及视频上给出的思路&#xff08;提醒&#xff09;&#x…

JSONP劫持

注意&#xff1a;仅用于技术讨论&#xff0c;切勿用于其他用途&#xff0c;一切后果与本人无关&#xff01;&#xff01;&#xff01; 个人博客地址&#xff1a;HJW个人博客 扩展&#xff1a; 面试问题&#xff1a;CSRF的两种方法中&#xff0c;CORS和JSONP的区别&#xff1…

dubbo进阶——服务导出

服务导出 在这里记录一下对" Dubbo 导出服务的过程"的研究。 触发时机 public class ServiceBean<T> extends ServiceConfig<T> implements InitializingBean, DisposableBean, ApplicationContextAware, ApplicationListener<ContextRefreshedEv…

代码随想录--数组--螺旋矩阵题型

n等于几&#xff0c;螺旋矩阵最外层行列数就等于几。如n等于3所以最外层一圈的行、列都是3个数字&#xff0c;如左图&#xff0c;n等于4所以最外层的行、列都是4个数字&#xff0c;如右图&#xff1a; 题目要求我们输出(以n3为例)[[123][894][765]]&#xff0c;题目只是给我们一…

MySQL:索引与事物

目录 简单了解索引的底层数据结构 索引的概念&#xff1a; 索引存在的意义&#xff1a; 索引的使用&#xff1a; 索引实现的数据结构 B树 B 树 B 树的特点 B 树的优势 事物 事物的概念 事物的使用 事物的四大特性 并发可能引起的问题 脏读问题 不可重复读 幻读…