1.编写程序验证:
任何大于2的偶数都可以表示成两个素数之和: 16 = 13 + 3  16=5 + 11
任何大于5的奇数都可以表示成三个素数之和: 11 = 2 + 2 + 7 11 = 3 + 3 + 52.中文金额大写
读入一个浮点数值,将其转化为中文大写形式:比如:123.45 转化为:壹佰贰拾叁元肆角伍分
 针对下面的情况进一步完善程序:
  1.当金额为整数时,只表示整数部分,省掉小数部分,并添加“整”字,例如:123表示:壹佰贰拾叁元整
  2.当金额中含有连续的0时,只需要写一个“零”即可,例如,10005表示为“壹万零伍元整”.
  3.10的省略表示形式。例如,110表示为“壹佰壹拾元整”,而10则表示为“拾元整”.

解决方案 »

  1.   


    public class Goldbach {
    private int count;

    public void setCount(int count){
    this.count = count;
    }
    public int getCount(){
    return count;
    }
    public void inc(){
    count++;
    }


    //判断是不是两个素数之和,如果是则返回true
    public boolean isSumOfPrime(int even){
    boolean sumOfPrime = false;
    Prime prime = new Prime();
    int factor1 = 0;
    int factor2 = 0;
    for(int i = 2; i <= even/2; i++){
    factor1 = i;
    factor2 = even - i;
    if(prime.isPrime(factor1) && prime.isPrime(factor2)){
    System.out.println(even + " = " + factor1 + " + " + factor2);
    sumOfPrime = true;
    break;
    }
    }
    return sumOfPrime;
    }
    public static void main(String[] args){
    Goldbach num = new Goldbach();
    num.setCount(0);
    for(int i = 4; i <= 10000; i += 2){
    if(num.isSumOfPrime(i))
    num.inc();
    }

    }}
    任何大于2的偶数都可以表示成两个素数之和
    验证4到10000的
      

  2.   


    public class Prime {
    //判断num是不是素数,是则返回true
    public boolean isPrime(int num){
    if(num == 2 || num == 3)
    return true;
    if(num%2 == 0)//num为偶数
    return false;

    //num为奇数
    int d = 3;
    while(d <= Math.sqrt(num) && num % d != 0){
    d += 2;
    }
    if(num % d != 0)
    return true;
    return false;
    }}