• JAVA基础:一个大于2的偶数始终可以分解成多个质数相乘


    package codeCompliation;

    import java.util.Scanner;

    public class isPrime {
     
     
     /**
      * 判断一个数是否是质数
      * @param number
      * @return
      */
     public static boolean isPrime(int number){
      int num=0;
      for(int i = 1;i<=number;i++){
       if(number%i==0){
        num++;
       }
      }
      if(num==2){
       return true;
      }else
       return false;
     }
     
     public static void main(String[] args) {
      int number=1;
      int dividend=1;
      while(true){
       System.out.println("请输入一个大于2的偶数:");
       Scanner scan=new Scanner(System.in);
       number=scan.nextInt();
       if(number%2==0&&number>0){
        break;
       }else
        System.out.println("输入错误,请重新输入:");
      }
      
      
      String reverse="";
      int num=number;  //(注意点第一个for中的取值,sum)
      for(dividend=2;dividend<num;dividend++){      //循环找出被除数里面的质数
       if(isPrime(dividend)&&number%dividend==0){     //找出被除数里的除数后,再找质数相除
        num=number/dividend;         //再把这个被除数赋值给sum;
        reverse+=(dividend+"*");        //然后把这个被除数加入reverse字符串中
        for(int i=1;i<num;i++){        //再判断这个被除数以内有能被上一个被除数整除的质数
         if(isPrime(i)&&num%i==0){       //在赋值给sum;
          num=num/i;          //如果是质数,且能被上一个被除数整除,则把这个质数加入到reverse中
          reverse+=(i+"*");         
          i=1; //(让下次循环到第二个for的时候从1开始循环    
          continue;
         }
        }
        
       }
      }
      System.out.println(number+"="+reverse+num);
      
     }
    }

  • 相关阅读:
    【转】千万级并发实现的秘密:内核不是解决方案,而是问题所在!
    漫话NUMA
    【转】为什么要内存对齐 Data alignment: Straighten up and fly right
    【转】内存地址对齐运算
    DPDK收发包处理流程-----(一)网卡初始化
    Nginx WebSocket proxying example
    nginx example
    kerberos-ldap linux账户集中管理认证
    利用i节点删除乱码文件
    linux sar命令详解
  • 原文地址:https://www.cnblogs.com/smile-zcc/p/5559665.html
Copyright © 2020-2023  润新知