首页 > 编程语言 >java质数算法

java质数算法

时间:2022-08-26 16:59:52浏览次数:47  
标签:singleNumStrList java int 质数 final 算法 NUM static public

import java.util.ArrayList;
import java.util.Iterator;
import java.util.List;
import java.stream.Collectors;
import java.stream.Stream;

public class Main{
public static final int NUM_0 = 0;
public static final int NUM_1 = 1;
public static final int NUM_2 = 2;
public static final int NUM_3 = 3;
public static final int NUM_4 = 4;
public static final int NUM_5 = 5;
public static final int NUM_6 = 6;
public static final int NUM_7 = 7;
public static final int NUM_8 = 8;
public static final int NUM_9 = 9;

public static final int NUM_1_NEGATIVE = -1;
public static final int NUM_2_NEGATIVE0 = -2;
public static final int NUM_3_NEGATIVE0 = -3;

public static final NUM_2_OR_5_USE_LIST = new int[]{0,2,4,6,8};

public static void main(String args[]){
    String numStr=args[0];
    List<Integer> singleNumStrList=Stream.of(numStr.split("")).map(x->Integer.valueOf(x)).collect(Collectors.toList());
    while(true){
          boolean flag=guessPrimeNumber(singleNumStrList);
          if(flag){
              System.out.println(singleNumStrList.stream().map(x->String.valueOf(x)).collect(Collectors.joining()));
              return;
          }
          
          nextSingleNumStrList(singleNumStrList);
          if(singleNumStrList.size()==NUM_1&&singleNumStrList.get(NUM_0)==NUM_0){
               return;
          }
    }
}

private static void nextSingleNumStrList(List singleNumStrList){
for(int i=singleNumStrList.size()-NUM_1;i>=NUM_0;i--){
int num=singleNumStrList.get(i);
num=num-NUM_1;
if(num>=NUM_0){
singleNumStrList.set(i,num);
break;
}
singleNumStrList.set(i,NUM_9);
}

Iterator<Integer> ite=singleNumStrList.iterator();
while(ite.hasNext){
  if(ite.next()==NUM_0){
    ite.remove();
    continue;
  }
  break;
}

}

private static void guessPrimeNumber(List singleNumStrList){
if(guessSingleNum(singleNumStrList)){
return true;
}

if(guessDivide2Or5(singleNumStrList)){
  return false;
}

if(guessDivide3(singleNumStrList)){
  return false;
}

if(guessDivide7(singleNumStrList)){
  return false;
}
return true;

}

private static void guessSingleNum(List singleNumStrList){
if(singleNumStrList.size() == NUM_1){
int num=singleNumStrList.get(NUM_0);
return numNUM_1 || numNUM_2 || numNUM_3 || numNUM_5 || num==NUM_7;
}
return false;
}

private static void guessDivide2Or5(List singleNumStrList){
int lastNum=singleNumStrList.get(singleNumStrList.size()-NUM_1);
for(int num: NUM_2_OR_5_USE_LIST){
if(lastNum==num){
return true;
}
}
return false;
}

private static void guessDivide3(List singleNumStrList){
long sum=singleNumStrList.parallelStream().mapToInt(x->x).sum();
return sum%NUM_3==NUM_0;
}

private static void guessDivide7(List singleNumStrList){
List tempList=new ArrayList<>();
for(int i=NUM_0,ringInex=NUM_1;i<singleNumStrList.size();i++,ringIndex++){
int calcNum=NUM_0;
switch(ringIndex){
case NUM_1:
calcNum=NUM_1;
break;
case NUM_2:
calcNum=NUM_3;
break;
case NUM_3:
calcNum=NUM_2;
break;
case NUM_1:
calcNum=NUM_1_NEGATIVE;
break;
case NUM_2:
calcNum=NUM_3_NEGATIVE;
break;
case NUM_3:
calcNum=NUM_2_NEGATIVE;
ringIndex=NUM_1;
break;
defualt:break;
}
tempList.add(singleNumStrList.get(i)*calcNum);
}
long sum=temList.parallelStream().mapToInt(x->x).sum();
return sum%NUM_7==NUM_0;
}
}

标签:singleNumStrList,java,int,质数,final,算法,NUM,static,public
From: https://www.cnblogs.com/ying-di/p/16628083.html

相关文章

  • 【Java】使用Druid连接池的监控面板排查慢SQL
     默认在后台服务的地址:http://localhost:8078/druid/login.html账号信息放在配置文件中获取:server:port:8078spring:datasource:druid:......
  • 代码审计(Java)——WebGoat_RequestForgeries
    一、Cross-siteRequestForgeries1.level3 这里的level3,就是限制了Referer的参数值为空或者是不等于host即可,单纯为了教学而设计的题目,没啥可说的~因......
  • JavaScript变量及声明
    本文介绍了如何使用语法和示例声明和使用变量。变量用于将数据存储在JavaScript代码中。在JavaScript中使用变量之前,必须先对其进行声明。让我们看一下如何声明一个变量。......
  • JavaScript if else语句
    在编写程序时,可能需要从一组给定的路径中采用一个。在这种情况下,您需要使用条件语句,以使程序可以做出正确的决定并执行正确的操作。在JavaScript中,if-else语句用于在条件......
  • JavaScript switch语句
    除了if...else之外,JavaScript还有一个称为switch语句的功能。switch是一种条件语句,它将针对多种可能的情况评估表达式,并根据匹配的情况执行一个或多个代码块。switch语......
  • Caused by: java.lang.ClassNotFoundException: org.springframework.boot.context.pr
    springboot的版本和springcloud的版本不一致导致Causedby:java.lang.ClassNotFoundException:org.springframework.boot.context.properties.Configurati错误截图......
  • 【Java面试】准备跳槽!那这期面试题必须要会,请描述一下Redis的缓存淘汰策略
    “请你描述一下Redis的缓存淘汰策略”你如果你正好遇到这个问题,想好怎么回答了吗?关于这个问题,我把高手的回答整理到了15W字的面试文档里面大家可以私信留言领取。下面......
  • 在python程序中调用java代码
     Python是一门“胶水”语言,非常灵活多变,但是在一些特殊的时候,也需要调用其它语言来协助实现更多的功能;在公司使用python进行接口测试的时候,会遇到有些接口数据是由公司的......
  • Java Bean 转换(copy)
    废话不多说上代码importorg.springframework.beans.BeanUtils;importorg.springframework.beans.BeanWrapper;importorg.springframework.beans.BeanWrapperImpl;im......
  • [Javascript] Singleton Pattern
    Source:https://javascriptpatterns.vercel.app/patterns/design-patterns/singleton-patternWiththeSingletonPattern,werestricttheinstantiationofcertainc......