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);
  
 }
}

时间: 2024-10-13 16:02:27

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

40.验证哥德巴赫猜想:一个大于2的偶数总可以分解成两个素数的和

//1.输入一个偶数.判断是否为偶数 //2.若是,求出小于其的所有素数 //3.将它们求和 //4.验证是否满足哥德巴赫猜想 #include<iostream> #include<cmath> using namespace std; int Sushu(int); int main() { int n,k,q; int a[1000]; begin: cout<<"please input an even number(偶数):"<<

在c#用控制语句完成哥德巴赫猜想(一个大于二的偶数一定是两个质数之和)

思路:首先分析判断,整个程序都是重复输入数字,所以整个过程都是在一个死循环语句中,这是就可以用一个whil语句,条件为true:其次对用户输入的数字input进行判断,去除小于等于2和大于2的基数,剩下的数字就能满足条件了:再然后找出1-input之间的的一个质数i:这是定义一个k,k等于input-i:再判断i,如果i也是质数,那就可以输出input=i+k:最终完成计算.(当编码太多时,最好创建区间来分开,这易于分析和找错) 代码如下: while (true) { Console.Writ

哥德巴赫猜想: 任何一个大于2的偶数都可以拆分为两个素数的和

打印出小于2000的偶数拆分情况: var goldbach = function (n){ for(var i = 2;i<n; i++){ if(isPrime(i) && isPrime(n-i)){return {n1:i,n2:(n-i)} ;} } return undefined; } var isPrime = function (n){ for(var i = 2; i< n; i++){if(n%i == 0){return false;}} return

java基础实例用if和for求输入的数是否为质数

import java.util.*; public static void main(String[] args){ Scanner sc=new Scanner(System.in); System.out.println("请输入一个大于0的整数M");//质数是余数是1和它本身的正整数 int m=sc.nextInt(); if (m==2||m==1){System.out.println("你输入的是一个质数");}//排除1和2 这是特殊数字 els

Java基础-一个java文件多个类的问题

一个.java文件当然可以包括多个类.但这些类有一个特殊的类与其它的不同,,这个类是带public 属性的类.一个.java类文件中仅有一个public属性的类.而且这个类与文件名相同.

Android 之Java基础---一个列表框引发的血案暨java装箱拆箱的实际应用

为了提高代码的封装性及可读性,我把原来手懒搞的一些AsyncTask的继承内部类决定都单独拉到一个文件夹中,但这一拉,出事情了! 我的应用业务是,有一个min_question_id(int )来记录目前读取到的服务器端数据,原来是内部类的时候,用的好好的,这把它单独剥离出来,每次拉取数据却是从头拉取了! 好了,先上原来的代码! public class getQuestionListDataTask extends AsyncTask<Void, Void, Void> { private

JAVA 基础编程练习题44 【程序 44 偶数的素数和】

44 [程序 44 偶数的素数和] 题目:一个偶数总能表示为两个素数之和. package cskaoyan; public class cskaoyan44 { @org.junit.Test public void sum() { java.util.Scanner in = new java.util.Scanner(System.in); int number = 0; do { System.out.println("请输入一个偶数:"); number = in.nextI

【基础练习】【枚举/搜索】codevs1792 分解质因数题解

题目描述 Description 编写一个把整数N分解为质因数乘积的程序. 输入描述 Input Description 输入一个整数 N 输出描述 Output Description 输出 分解质因数 .拆成几个质数相乘的形式,质数必须从小到大相乘 样例输入 Sample Input 756 样例输出 Sample Output 756=2*2*3*3*3*7 数据范围及提示 Data Size & Hint 范围在longint内.不是高精度. 题目很简单,用搜索或者循环枚举都可以. 循环

一天一个Java基础——泛型

这学期的新课——设计模式,由我仰慕已久的老师传授,可惜思维过快,第一节就被老师挑中上去敲代码,自此在心里烙下了阴影,都是Java基础欠下的债 这学期的新课——算法设计与分析,虽老师不爱与同学互动式的讲课,但老师讲的挺好,不过由于数据结构欠缺课听的有点烧脑,都是数据结构欠下的债 这学期的新课——英语口语,虽外教老师风骚逗趣浪荡不羁爱自由,但我辈词汇量欠缺,表明淡定说yeah,但心中一万匹草泥马策马奔腾,都是英语欠下的债 1.泛型类 实体类(容器类),经常重用的类,下面是一个没有用泛型的实体类: 1