首页 > 编程语言 >算法刷题-查找组成一个偶数最接近的两个素数-JAVA

算法刷题-查找组成一个偶数最接近的两个素数-JAVA

时间:2023-02-28 21:55:05浏览次数:37  
标签:算法 JAVA Scanner int System 偶数 素数 刷题

0x00 引言

为获取一个良好的算法思维,以及不再成为一个脚本小子,争取每天一道算法题,培养自己的逻辑思维,温顾各类型语言语法知识。

题解只写自己理解的解法,其他解法不再增加。题目与解析均在代码里面。

0x01 难度等级

简单

0x02 代码

package 简单;
/*
*
* 任意一个偶数(大于2)都可以由2个素数组成,组成偶数的2个素数有很多种情况,本题目要求输出组成指定偶数的两个素数差值最小的素数对。

数据范围:输入的数据满足 4 \le n \le 1000 \4≤n≤1000
输入描述:
输入一个大于2的偶数

输出描述:
从小到大输出两个素数
*
*
*
* */

import java.util.Scanner;

/*
* 要求一,是素数
* 要求二,差最小

*示例1
输入:
20

输出:
7
13
* */
public class 查找组成一个偶数最接近的两个素数 {
    public static void main(String[] args) {

        //寻找差值最小,要找两个素数相加等于num
        Scanner sc=new Scanner(System.in);
        int x=sc.nextInt();
        int m=x;
        int a=0;
        int b=0;
        for (int i = 0; i <=x; i++) {
//            if(m+n==x)
            for (int j = 0; j <=i; j++) {
                if(isSUshu(i)&&isSUshu(j)&&(i+j)==x){
//                    System.out.println(j-i);//用一个参数去接收j-i
//                    m=j-i;
                    if(m>Math.abs(j-i)){
                        m=Math.abs(j-i);//如果j-i的绝对值小于最初的x,就把该值赋给m
                        a=i;
                        b=j;
                    }
                }
            }
        }
//        System.out.println(m);

        System.out.println(b);
        System.out.println(a);



    }

    //判断该数是否为素数
    public static boolean isSUshu(int num){

        for (int i = 2; i < num; i++) {
            if(num%i==0){
                return false;
            }
        }
        return true;
    }
}

0x03 算法思想

(1)理解题目的含义,需要满足的条件是输入一个比2大的素数

(2)素数的含义,素数,指在一个大于1的自然数中,除了1和此整数自身外,不能被其他自然数(不包括0)整除的数

(3)函数的思想,写一个函数作为判断,对每一个求和的i与j都进行判断

(4)数学类的工具包里绝对值的使用:

m=Math.abs(j-i);

0x04 运行结果

标签:算法,JAVA,Scanner,int,System,偶数,素数,刷题
From: https://www.cnblogs.com/cute-puli/p/17166187.html

相关文章

  • argument keyword in JavaScript Functions
    argument是一个所有(非箭头)函数都有的对象,它是一个类似数组的对象(但它不是Array)详见:https://developer.mozilla.org/zh-CN/docs/Web/JavaScript/Reference/Functions/argum......
  • java maven 打包可执行jar文件
    <build><plugins><!--使用maven-assembly-plugin插件打包--><plugin><groupId>org.apache.maven.plugins</groupId><artif......
  • 基本算法之二分查找法折半查找(Java)
    前提条件:数组中的数据必须是有序的!核心思想:每次排除一半的数据,查询数据的性能明显提高很多!      publicclassTask{publicstaticvoidmain(Stri......
  • JAVAWEB学习-session-用session实现获取用户姓名
    继续学习session的有关知识,实现获取用户姓名session的作用是可以实现不同的页面保存共享同一个数据,在许多方面十分有用我们实现一个获取用户姓名的功能就用之前增删改......
  • JavaScript中单例模式这样用
    如果希望自己的代码更优雅、可维护性更高以及更简洁,往往离不开设计模式这一解决方案。在JS设计模式中,最核心的思想:封装变化(将变与不变分离,确保变化的部分灵活,不变的部分......
  • C++刷题笔记
    初始化string数组stringnumbers[12]={{"1"},{"2"},{"10"},{"11"},{"23"},{"25"},{"31"},{"36"},{"37"},{"102"},{"325"},{"438"}};填充for(in......
  • JAVAWEB学习-session-用session实现禁止用户非法访问页面
    今天学习了JAVAWEB中session的有关知识,能够实现禁止用户非法访问页面.session可以理解为一个表,每条数据有两个属性,String和Object,即名称和内容session的作用是可以实......
  • javascript之正则表达式验证email
    1<!DOCTYPEhtml>2<htmllang="en">34<head>5<metacharset="UTF-8">6<metahttp-equiv="X-UA-Compatible"content="IE=edge">7......
  • JavaSE——构造方法
    packagecom.zhao.test3;publicclassStudent{privateStringname;privateintage;//如果我们自己没有写任何的构造方法//那么虚拟机会给我们......
  • JavaSE——this关键字
    this修饰的变量用于指代成员变量,其主要作用是(区分局部变量和成员变量的重名问题)方法的形参如果与成员变量同名,不带this修饰的变量指的是形参,而不是成员变量方法的......