【实验一】java基础

news2024/11/29 20:47:18

1、每个非素数都可以唯一地被分解为若干素数地乘积,请编程对其进行验证。

个人答案:

package 实验1;



import java.util.Scanner;

public class sushu {

    public static Scanner input = new Scanner(System.in);

    public static void main(String[] args) {

        System.err.println("Please enter a number:");

        int x = input.nextInt();

        System.out.print(x+"=");

        int i=2;

        while(i<=x){        //使用循环来找到可以被整除的数,然后通过out函数输出

            if(i == x){     //如果相等的话,就说明这个数没有因数,只有1和它自己;

                System.out.println(i);

                break;

            }

            else if(x % i ==0){     //如果这个数有因数,然后找到除去这个因数后的值,继续循环

                System.out.println(i+"*");

                x=x/i;

            }

            else{           //如果都不满足,则继续循环

                i++;

            }

        }

    }



}

参考答案:

package primeDot;

import java.util.*;

public class primeDot {

	public static void main(String[] args)

	{

		System.out.println("请输入一个大于2的非素数。输入0退出");

		Scanner scn=new Scanner(System.in);

		int n=scn.nextInt();

		while(n!=0)

		{

			int i=2;//i是除数

			int g=2;//g是商



			

			for(;n%i!=0;i++)

			{

			}



			g=n/i;//第一个能被整除的最小数肯定是素数

			System.out.print(i+"\t");

	

			for(;i<g;i++)

			{

				for(;g%i!=0;i++)

				{

				}

				g=g/i;//更新g,当前的i是能被g整除的最小素数

				if(isPrime(i))

				{

					System.out.print(i+"\t");

				}

				if(isPrime(g))

				{

					System.out.print(g+"\t");

				}

				i=1;//因为前面for要++。所以更新为1,经过for+后就会成为2

			}

			

			System.out.println("请继续输入");

			n=scn.nextInt();

		}

		System.out.println("结束");

	}

	public static boolean isPrime(int x)

	{

		if(x<2)

		{

			return false;

		}

		for(int i=2;i<=Math.sqrt(x);i++)

		{

			if(x%i==0)

			{

				return false;

			}

		}

		

		return true;

	}

	

}

 2、已经2017年的第一天是星期日,打印2017年某月份的月历。书上38页实验题目2

个人答案:

package 实验1;



import java.util.Scanner;



public class Calander {

       

        //主函数入口

        public static void main(String[] args) {

     

            try (Scanner input = new Scanner(System.in)) {

                //获得用户输入的年月数据

                System.out.print("请输入年月(格式:年.月,如2019.9): ");

                String yearAndMonth = input.nextLine();

                //把客户输入的数据分离出年与月,并且转为整数类型

                int year,month;

                year = Integer.parseInt(yearAndMonth.substring(0,yearAndMonth.indexOf('.')));

                month = Integer.parseInt(yearAndMonth.substring(yearAndMonth.indexOf('.')+1));

               

                //打印日历的头部

                printMonthTitle(year,month);

                //打印日历的日期部分

                printMonthbody(year,month);

            } catch (NumberFormatException e) {

                // TODO Auto-generated catch block

                e.printStackTrace();

            }

        }

     

        //打印日历的头部部分

        public static void printMonthTitle(int year, int month) {

            // TODO Auto-generated method stub

            String nameOfMonth = getNameOfMonth(month);

            System.out.printf("\n%13s-%-13d\n",nameOfMonth,year);

            for(int i=0;i<27;i++) System.out.print('=');

            System.out.println("\nMon Tue Wed Thu Fri Sat Sun");

        }

       

        //获得某个月的英文名称

        public static String getNameOfMonth(int month) {

            // TODO Auto-generated method stub

            String nameOfMonth="January";

            switch(month) {

            case 1: nameOfMonth = "January";break;

            case 2: nameOfMonth = "February";break;

            case 3: nameOfMonth = "March";break;

            case 4: nameOfMonth = "April";break;

            case 5: nameOfMonth = "May";break;

            case 6: nameOfMonth = "June";break;

            case 7: nameOfMonth = "July";break;

            case 8: nameOfMonth = "August";break;

            case 9: nameOfMonth = "September";break;

            case 10: nameOfMonth = "October";break;

            case 11: nameOfMonth = "November";break;

            case 12: nameOfMonth = "Decmber";break;

            }

           

            return nameOfMonth;

        }

     

        //输出打印的月份日期部分

        public static void printMonthbody(int year, int month) {

            // TODO Auto-generated method stub

            int count=0;

            int firstDayOfMonth=getFirstDayOfMonth(year,month);

            int totalDayOfMonth=getTotalDayOfMonth(year,month);

           

            //打印1号之前的日历空格

            for(int i=1;i<firstDayOfMonth;i++) {

                System.out.print("    ");

                count++;

            }

            //开始从1号开始打印,一直到整个月结束

            for(int day=1;day<=totalDayOfMonth;day++) {

                if(count==7) {

                    System.out.print("\n");

                    count = 0;

                }

                System.out.printf("%-4d",day);

                count++;

            }

        }

     

        //获得某个月的总天数

        public static int getTotalDayOfMonth(int year, int month) {

            //返回各个月的天数

            if(month==1||month==3||month==5||month==7||month==8||month==10||month==12)

                return 31;

            else if(month==4||month==6||month==9||month==11)

                return 30;

            else{

                if(isLeapYear(year)) return 29;

                else return 28;

            }

        }

     

        //算出某月第一天是星期几

        public static int getFirstDayOfMonth(int year, int month) {

            // 返回某个月的第一天是星期几,已知2019-1-1是周二

            int totalDayFrom2019_1_1=0,day=2;

            if(year>=2019) {

                //累加2019年到year之间的所有整年总天数

                if(year>2019) {

                    for(int i=2019;i<year;i++) {

                        if(isLeapYear(i)){

                            totalDayFrom2019_1_1 += 366;

                        }else {

                            totalDayFrom2019_1_1 += 365;

                        }

                    }

                }

                //累加该月份到该年1月的总天数

                for(int j=1;j<month;j++) {

                    totalDayFrom2019_1_1 += getTotalDayOfMonth(year,j);

                }

            }

            else {

                //累加2019年到year之间的所有整年总天数

                for(int i=year+1;i<2019;i++) {

                    if(isLeapYear(i)){

                        totalDayFrom2019_1_1 += 366;

                    }else {

                        totalDayFrom2019_1_1 += 365;

                    }

                }

                //累加该月份到该年12月的总天数

                for(int j=12;j>=month;j--) {

                    totalDayFrom2019_1_1 += getTotalDayOfMonth(year,j);

                    }

            }

           

            //计算得到该月第一天星期几,如果结果为0即刚好被7整除,为星期天

            if(year>=2019) {

                day = ((totalDayFrom2019_1_1%7)+day)%7;

            }else {

                day = (day-(totalDayFrom2019_1_1%7)+7)%7;

            }

            if(day==0) day=7;

           

            return day;

        }

       

        //计算某年是否为闰年

        public static boolean isLeapYear(int year) {

            //判断一个年份是否是闰年

            boolean leapYearOrNot=false;

            if ((year%4==0 && year%100!=0)||year%400==0) {

                leapYearOrNot=true;

            }

            else

                leapYearOrNot=false;

            return leapYearOrNot;

        }

     

    }

 

 参考答案:

/***

 * 

 * 打印某年某月日历

 *

 */

import java.util.*;

public class Calender{

public static void main(String[] args)

{

    System.out.println("请输入年和月");

    Scanner scn=new Scanner(System.in);

    int year=scn.nextInt();

    int month=scn.nextInt();

    title(year,month);

    int day=getDay(year,month);

    int st=getWeek(year,month);

    int i=1;

    for(;i<=st;i++)

   

    System.out.printf("%4s"," ");

//    System.out.print("\t");

    for(int d=1;d<=day;d++)

    {

   

    System.out.printf("%4s",d);

//    System.out.print("\t"+d);

   

    if((d+st)%7==0)

    {

    System.out.println();

    }

   

    }

}

public static void title(int year,int month)

{

//System.out.println("\t"+"\t"+"\t"+"*****"+year+"年"+month+"月份"+"*****");

System.out.println("*****"+year+"年"+month+"月份"+"*****");

//System.out.print("\t"+"日"+"\t"+"一"+"\t"+"二"+"\t"+"三"+"\t"+"四"+"\t"+"五"+"\t"+"六"+"\t");

System.out.printf("%3s%4s%4s%4s%4s%4s%3s","日","一","二","三","四","五","六");

System.out.println();


}

public static int getWeek(int year,int month)//查看这个月开始那天是星期几

{

int x=0;

for(int m=1;m<month;m++)

{

x=x+getDay(year,m);

}

int st=x%7;

return st;


}

public static int getDay(int year,int month)

{

switch(month)

{

case 1:

case 3:

case 5:

case 7:

case 8:

case 10:

case 12:

return 31;

case 4:

case 6:

case 9:

case 11:

return 30;

case 2:

if (isLeap(year))

{

return 29;

}

else 

{

return 28;

}


}


return 0;

}

public static boolean isLeap(int year)

{

if((year%4==0&&year%100!=0)||(year%400==0))

{

return true;

}

else

return false;

}

}

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

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

相关文章

【工具使用】VS Code 某些文件夹为灰色全局搜索搜不到该文件夹的内容

一&#xff0c;简介 本文主要介绍在VS Code使用过程中&#xff0c;出现文件夹为灰色&#xff0c;且搜索内容时灰色文件夹中的字符串检索不到问题的原因和解决方法&#xff0c;从而提高工作效率。供参考。 二&#xff0c;问题现象 VS Code中部分文件夹显示为灰色&#xff0c;…

找工作第三弹——JS面试题由浅入深

目录 前言理论篇1.js的单线程2.js的数据类型3.js的内存泄漏4.js的宏任务与微任务&#xff08;事件循环机制&#xff09;5.js的作用域与作用域链6.js的闭包7.ES6新增8.原型和原型链8.深浅拷贝9.js的防抖和节流10.js中的this指向11.改变this指向的call、apply、bind12.事件流13.D…

Git 命令提交和分支控制

强大的分支和合并&#xff1a;Git 提供了强大的分支功能&#xff0c;使得开发者可以轻松创建、合并和管理分支。这种灵活性使得团队可以同时进行多个任务和实验性开发&#xff0c;而不会相互干扰 Git 在处理大型代码仓库和版本历史时表现出色。它使用了一种称为“快照”的机制…

数据处理轻松搞定:如何利用PaddleNLP高效处理大规模文本数据

目录 前言一、paddleNLP介绍、特性1-1、介绍1-2、特性介绍 二、paddleNLP安装三、PaddleNLP一键使用3-1、中文分词3-2、词性标注3-3、命名实体识别3-4、依存句法分析&#xff08;DDParser&#xff09;3-5、解语知识标注3-6、文本纠错&#xff08;ERNIE-CSC&#xff09;3-7、文本…

工业园区扬尘噪音监测,该怎么操作?这篇告诉你!

随着工业园区的不断发展和扩大&#xff0c;扬尘和噪声问题成为引起关注的重要环境挑战。工业活动产生的扬尘和噪声不仅对周边居民的生活质量和健康构成威胁&#xff0c;也对环境可持续性产生负面影响。 因此&#xff0c;进行有效的扬尘和噪声监测成为管理者和决策者必须关注和解…

【打包问题】执行mvn spotless:apply之后,import的包被去移除了

import的包被去移除了 出现的问题mvn spotless:apply的作用原因在哪解决方式快速恢复代码的规范性 出现的问题 执行mvn spotless:apply之后 mvn spotless:apply的作用 简单来说这个就是执行代码的规范化 原因在哪 我为了展示效果所以把下满应该引入的包注释了出来&#xf…

CDN应用的三大技术及五大优点

CDN应用的三大技术 CDN的实现需要依赖多种网络技术&#xff0c;如负载均衡技术、动态内容分发与复制技术、缓存技术等&#xff0c;以下为您做简要介绍&#xff1a; 1、负载均衡技术 负载均衡技术就是将网络中的流量尽可能平均分配到多个能完成相同任务的服务器或网络节点&am…

奇葩功能实现:级联选择框组件el-cascader实现同一级的二级只能单选,但是一级可以多选

前言&#xff1a; 其实也不能说这个功能奇葩&#xff0c;做项目碰到这种需求也算合理正常&#xff0c;只是确实没有能直接实现这一需求的现成组件。 el-cascader作为级联选择组件&#xff0c;并不能同时支持一级多选&#xff0c;二级单选的功能&#xff0c;只能要么是单选或者…

从零开始构建一个电影知识图谱,实现KBQA智能问答[下篇]:Apache jena SPARQL endpoint及推理、KBQA问答Demo超详细教学

项目设计集合&#xff08;人工智能方向&#xff09;&#xff1a;助力新人快速实战掌握技能、自主完成项目设计升级&#xff0c;提升自身的硬实力&#xff08;不仅限NLP、知识图谱、计算机视觉等领域&#xff09;&#xff1a;汇总有意义的项目设计集合&#xff0c;助力新人快速实…

Pyhon学习之条件判断和循环语句

1.if flag 1 if 1:print(type(True)) if 0:print(name) if flag:print("flag的类型&#xff1a;"str(type(flag)))根据这个结果&#xff0c;可以看出来&#xff0c;这里没有进行类型转换&#xff0c;bool就是int true 就是1 false 就是0 flag 0 if 1:print(type(…

Fiddler抓取app HTTPS请求

一、电脑和手机连接同一WIFI cmd->ipconfig&#xff0c;查看电脑当前IP地址为192.168.101.48 二、配置Fiddler Options选项勾选Allow remote computers to connect。 安装证书 勾选抓取HTTPS请求 三、手机端配置代理 手机端连接wifi&#xff0c;手动配置代理。 主机名&…

uniapp下上传图片后图片裁剪加图片旋转,支持H5和app

效果图 代码如下 <template><view class"container" v-show"isShow"><view><view class"cropper-content"><view v-if"isShowImg" class"uni-corpper":style"width: cropperInitW px;he…

Java 动态规划 174. 地下城游戏

代码展示&#xff1a; class Solution {public int calculateMinimumHP(int[][] dungeon) {int mdungeon.length;int ndungeon[0].length;//创建dp数组int[][]dpnew int[m1][n1];//初始化for(int i0;i<m;i){dp[i][n]Integer.MAX_VALUE;}for(int j0;j<n;j){dp[m][j]Integ…

Linux - 用户|权限管理 - 查看用户组

当我们需要查看 Linux服务器都有哪些用户组的时候, 可以通过如下命令进行查看: cat /etc/group如下图所示: 同时, 还可以通过groupmod三次tab键 进行查看: 具体信息内容解读:

js- 左右两边子数组的和相等

给你一个整数数组 nums &#xff0c;请计算数组的 中心下标 。 数组 中心下标 是数组的一个下标&#xff0c;其左侧所有元素相加的和等于右侧所有元素相加的和。 如果中心下标位于数组最左端&#xff0c;那么左侧数之和视为 0 &#xff0c;因为在下标的左侧不存在元素。这一点…

网络编程-day5

IO多路复用--服务器 从中获取返回给指定客户端的信息&#xff08;修改版&#xff09; IO多路复用--客户端

【Distributed】分布式ELK日志文件分析系统(二)

文章目录 一、FilebeatELK 部署1. 环境部署2. 在 Filebeat 节点上操作2.1 安装 Filebeat2.2 设置 filebeat 的主配置文件 3. 在 Apache 节点上操作3.1 在 Logstash 组件所在节点上新建一个 Logstash 配置文件 3. 启动3.1 在Logstash 组件所在节点启动3.2 在 Filebeat 节点 启动…

神仙打架——号称是性能最强的中英文百亿参数量开源模型Baichuan-13B他来了!

下午开个会的功夫看到新闻推送一条最新的大模型相关的项目开源发布了&#xff0c;到底是怎么个事我们来一起看下。 官方项目地址在这里&#xff0c;如下所示&#xff1a; 可以看到&#xff1a;才刚刚过去十几分钟的时间就已经有超过500的star量了。 就在不久前的6月15日&…

Java中使用工厂模式和策略模式优雅消除if-else语句(UML类图+案例分析)

前言&#xff1a;在最近的后端开发中&#xff0c;多多少少会发现有很多if-else语句&#xff0c;如果条件过多则会造成整体代码看起来非常臃肿&#xff0c;这边我就举一个我在实际开发中的例子&#xff0c;来进行阐述这两种模式在实际开发中我是如何运用的。 目录 一、工厂模式…

Web APls-day05

(创作不易&#xff0c;感谢有你&#xff0c;你的支持&#xff0c;就是我前行的最大动力&#xff0c;如果看完对你有帮助&#xff0c;请留下您的足迹&#xff09; Window对象 BOM BOM(Browser Object Model ) 是浏览器对象模型 window对象是一个全局对象&#xff0c;也可以说是…