【华为机试036】素数伴侣

2023-05-16

题目描述:

若两个正整数的和为素数,则这两个正整数称之为“素数伴侣”,如2和5、6和13,它们能应用于通信加密。现在密码学会请你设计一个程序,从已有的N(N为偶数)个正整数中挑选出若干对组成“素数伴侣”,挑选方案多种多样,例如有4个正整数:2,5,6,13,如果将5和6分为一组中只能得到一组“素数伴侣”,而将2和5、6和13编组将得到两组“素数伴侣”,能组成“素数伴侣”最多的方案称为“最佳方案”,当然密码学会希望你寻找出“最佳方案”。

输入:

有一个正偶数N(N≤100),表示待挑选的自然数的个数。后面给出具体的数字,范围为[2,30000]。

输出:

输出一个整数K,表示你求得的“最佳方案”组成“素数伴侣”的对数。

Java实现:


import java.util.*;

public class Main {
    public static void main(String[] args) {
        Scanner sc=new Scanner(System.in);
        while(sc.hasNext()) {
            int n=sc.nextInt();
            ArrayList<Integer> ji =new ArrayList<>();//存放奇数
            ArrayList<Integer> ou =new ArrayList<>();//存放偶数
            for(int i=0;i<n;i++){
                int x=sc.nextInt();
                if(x%2==0)
                    ou.add(x);
                else
                    ji.add(x);
            }
            int[] used =new int[ou.size()];
            int[] oushu =new int[ou.size()];
            int sum=0;
            for(int i=0;i<ji.size();i++){
                //对每个奇数依次在所有偶数中
                Arrays.fill(used, 0);
                if(find(ji.get(i),ou,used,oushu)) sum++;
            }
            System.out.println(sum);
        }
    }
    private static boolean find(Integer x, ArrayList<Integer> ou, int[] used, int[] oushu) {
        for (int j=0;j<ou.size();j++){//扫描每个偶数
            if (isprim(x+ou.get(j)) && used[j]==0)
            {
                used[j]=1;
                if (oushu[j]==0 || find(oushu[j],ou,used,oushu)) {
                    oushu[j]=x;//索引为j的偶数对应的奇数
                    return true;
                }
            }
        }
        return false;
    }
    private static boolean isprim(Integer x) {
        int sum=0;
        for(int i=2;i<=Math.pow(x, 0.5);i++){
            if(x%i==0) return false;
        }
        return true;
    }

}

知识点:

  • 判断一个数是否为素数,就看它能否被比它的开平方的数小的所有数整除
  • 在所有素数中,除了2之外都是奇数,只有奇数+偶数才能为奇数,因此将输入的数分为奇数和偶数两部分
  • TODO:匈牙利算法:二分图匹配
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

【华为机试036】素数伴侣 的相关文章

随机推荐

  • 【5G核心网】控制面与用户面协议栈

    本章节指定 5GS 实体之间的整体网络协议栈 xff0c 比如在 UE 和 5GC 网络功能 xff0c 在 5G AN 和 5GC 网络功能 xff0c 或者在 5GC 网络功能之间 1 控制平面 5GAN和5G核心网 xff1a N2
  • 【5G核心网】free5GC AMF源码分析

    free5gc AMF 源码分析 结构体 Sbi type Sbi struct Scheme string 96 yaml 34 scheme 34 96 RegisterIPv4 string 96 yaml 34 registerIP
  • 【5G核心网】5GC核心网之网元UDM

    UDM xff0c Unified Data Management xff0c 统一数据管理功能 xff0c 支持一下功能 xff1a 3GPP AKA身份验证凭证的生成 用户标识处理 xff08 例如5G系统中每个用户的SUPI的存储和管
  • 【5G核心网】 5G安全之AKA验证流程

    在 5G 网络的安全类型 xff1a UE 访问网络服务所需的 网络访问安全性 此安全性主要涵盖信令和数据的身份验证 xff0c 完整性和加密 域安全性主要涵盖不同网络节点之间的安全通信 应用程序域安全性涵盖对等应用程序之间的安全性机制 有
  • 【5G核心网】free5GC Path Switch Request源码分析

    Path Switch Request 过程的目的是请求将 NG U 传输承载的下行链路终结点切换到新的终结点 Figure 8 4 4 2 1 Path switch request successful operation NG RAN
  • 【kubernetes/k8s概念】kube-ovn架构和部署安装

    Kube OVN是一款由灵雀云自主研发的开源企业级云原生Kubernetes容器网络编排系统 xff0c 它通过将OpenStack领域成熟的网络功能平移到Kubernetes xff0c 极大增强了Kubernetes容器网络的安全性 可
  • 【kubernetes/k8s概念】OVN NorthBound DB 及 ovn-nbctl 命令

    OVN 北向数据库 xff08 OVN Northbound DB xff09 是 OVN 和 CMS 之间的接口 xff0c Northbound DB 的数据几乎都是由 CMS 产生的 xff0c ovn northd 监听这个数据库的
  • 【kubernetes/k8s概念】OVN SouthBound DB 及 ovn-sbctl 命令

    OVN 南向数据库 xff08 OVN Southbound DB xff09 xff0c 南向数据库是系统的中心 xff0c 客户端是上层的 ovn northd 和下层运行在每一个传输节点的 ovn controller 南向数据库包括
  • strok函数用法

    char strtok char strToken const char strDelimit 用来将字符串分割成一个个片段 参数str指向欲分割的字符串 xff0c 参数delimiters则为分割字符串 xff0c 当strtok 在参
  • 【kubernetes/k8s概念】thanos原理架构

    概述 Thanos 是一组组件 xff0c 可以组合成具有无限存储容量的高可用度量系统 xff0c 可以无缝添加到现有 Prometheus 部署之上 Thanos 利用 Prometheus 2 0 存储格式高效地将历史指标数据存储在任何
  • 【containerd 源码分析】containerd image list 源码分析

    本文分析 containerd 列出所有镜像的分析过程 xff0c 包括 ctr image 命令行以及 containerd daemon 执行 过程 xff0c 也包含镜像 metadata xff0c content 等内容 1 执行
  • 【containerd 源码分析】containerd image pull 源码分析

    本文分析 containerd pull 镜像的分析过程 xff0c 包括 ctr image 命令行以及 containerd daemon 执行 过程 xff0c 也包含镜像 metadata xff0c content 等内容 1 执
  • 【golang 配置】gogoprotobuf搭建

    在go中使用 Google protobuf xff0c 有两个可选用的包goprotobuf xff08 go官方出品 xff09 和gogoprotobuf gogoprotobuf是完全兼容google protobuf xff0c
  • 【docker 17 源码分析】docker pull image 源码分析

    一 Image主要命令 docker images xff08 所有 xff09 docker images java xff08 所有java xff09 docker images java 8 xff08 固定tag的jave xff
  • 【kubernetes/k8s概念】CNI详解

    1 为什么CNI CNI是Container Network Interface的是一个标准的 xff0c 通用的接口 现在容器平台 xff1a docker xff0c kubernetes xff0c mesos xff0c 容器网络解
  • 【kubernetes/k8s概念】CNI plugin bridge源码分析

    什么是bridge bridge是一个虚拟网络设备 xff0c 可以配置IP MAC地址等 xff1b 其次 xff0c bridge是一个虚拟交换机 xff0c 和物理交换机有类似的功能 普通的网络设备只有两端 xff0c 从一端进来的数
  • 【kubernetes/k8s概念】istio 原理与架构

    看着有点蒙 xff0c 摘录一下 xff0c 待有时间分析源码 WHY Istio 当应用被拆分为多个微服务后 xff0c 进程内的方法调用变成了进程间的远程调用 引入了对大量服务的连接 管理和监控的复杂性 随着微服务出现 xff0c 微服
  • 【docker基础知识】docker坑问题汇总

    1 Got starting container process caused 34 process linux go 301 running exec setns process for init caused 34 exit statu
  • 【kubernetes/k8s概念】k8s 坑问题汇总

    1 Pod始终处于Pending状态 如果Pod保持在Pending的状态 xff0c 意味着无法被正常的调度到节点上 由于某种系统资源无法满足Pod运行的需求 系统没有足够的资源 xff1a 已经用尽了集群中所有的CPU或内存资源 需要清
  • 【华为机试036】素数伴侣

    题目描述 xff1a 若两个正整数的和为素数 xff0c 则这两个正整数称之为 素数伴侣 xff0c 如2和5 6和13 xff0c 它们能应用于通信加密 现在密码学会请你设计一个程序 xff0c 从已有的N xff08 N为偶数 xff0