| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 1550 人关注过本帖
标题:谁想挑战下这道题????
只看楼主 加入收藏
jxy604803280
Rank: 1
等 级:新手上路
帖 子:9
专家分:8
注 册:2014-12-27
收藏
得分:0 
回复 3楼 邓士林
我的天,做这题做了两个整整2小时...................................................
程序代码:
package cn.jxy.zzu;

public class Test {

    public static void main(String[] args) {
        int[] n=new int[100];//第2步所得数组
        int len=TrueArray(n);//第2步所得数组以及长度
        getTheOnlyNum(n,len);
            
    }
    
    
    //和先生:我知道你不知道这两个数是什么,我也不知道这两个数是什么:------>说明了该和不能为两个素数相加,两个素数相乘乘积唯一
    //第1步.判断是否为素数
    static boolean specialNum(int num){
        int i=2;
        for(;i<num;i++)
        {
            if(num%i==0) return true;
        }
        return false;    
    }
    
    
    //第2步.把到198的数全列举出来(符合1所提标准的,放入数组中)
    static int TrueArray(int n[])
    {
        int num=2,temp,j,k=0;//从2开始循环
        for(;num<=198;num++){
            temp=num/2;
            for(j=2;j<=temp;j++)
            {
                if(specialNum(j)==false && specialNum(num-j)==false) break;//如果是素数,直接跳数判断下一个数
            }
            if(j==(temp+1)) n[k++]=num;//将数放入数组中
        }
        return k;//返回数组的长度
    }
    
    /*积先生:我现在知道这两个数是什么了:----->说明了这个数的乘积有多种组合相乘得到,同时这么多种组合中只有一个数满足第二步所提要求:例如
        和为11:第一例(9+2-->9*2=18(同时3*6也为18,这时得判断3+6=9是否为在第2步所求数组中,若是,两者重复,积先生就无法得出结论))
    */
    static boolean isTheNum(int num,int n[],int currentNum)
    {
        int i;
        for(int j=2;j*j<=num;j++){
            if(num%j==0&&j!=currentNum){
                for( i=0;n[i]!=0;i++){
                    if((j+num/j)==n[i])
                    {
                        return false;
                    }
                } 
            }
        }
        return true;//只有当全部遍历完才确定此数满足要求
    }
    
    
    //和先生说他也知道了 ,说明了该和为在满足一个加数满足一个和的条件下唯一
    static void getTheOnlyNum(int n[],int len)
    {
        int temp,temp1=0,temp2=0,i=0,p=0,j=2;//temp用来记录满足条件的乘积,temp1暂时用来记录两数和,temp2记录其中较小的加数
        int sum=0;//记录最后满足条件的唯一和
        int adder=0;//记录最后满足条件的唯一加数
        for(;i<len;i++){
            int flag=0;//flag用来标记是否为和与满足条件的加数唯一对应
            for(j=2;j<=n[i]/2;j++){
                temp=j*(n[i]-j);
                if(isTheNum(temp,n,j))
                {
                    temp1=n[i];
                    temp2=j;
                    flag++;
                    System.out.println(n[i]+" : "+j);//输出满足条件的全部加数
                }
            }
            //记录唯一正确答案
           if(flag==1)
           {
               sum=temp1;
               adder=temp2;   
           }
        }
        System.out.println("此为正确答案:"+(sum-adder)+":"+adder);
    }
}
2014-12-31 22:41
jxy604803280
Rank: 1
等 级:新手上路
帖 子:9
专家分:8
注 册:2014-12-27
收藏
得分:0 
回复 3楼 邓士林
答案:   13,4
对吗?
2014-12-31 22:43
日知己所无
Rank: 11Rank: 11Rank: 11Rank: 11
等 级:贵宾
威 望:38
帖 子:427
专家分:2071
注 册:2014-3-22
收藏
得分:0 
回复 12楼 jxy604803280
除了回复错人以外,对了
2015-01-01 10:07
jxy604803280
Rank: 1
等 级:新手上路
帖 子:9
专家分:8
注 册:2014-12-27
收藏
得分:0 
回复 13楼 日知己所无
.........出大丑了........我的天
2015-01-01 20:41
liucao
Rank: 10Rank: 10Rank: 10
来 自:恶灵之城
等 级:贵宾
威 望:13
帖 子:538
专家分:1575
注 册:2014-8-6
收藏
得分:0 
楼上卖萌小分队

one car come one car go ,two car peng peng people die.
2015-01-04 09:25
编号1016
Rank: 3Rank: 3
等 级:论坛游侠
威 望:5
帖 子:46
专家分:188
注 册:2014-5-8
收藏
得分:2 
回复 楼主 air5116
我想问一下,,两个人都说自己知道老师的生日,那谁说得最准!?为什么?

相互学习,让自己变得更强大!
2015-01-05 16:45
快速回复:谁想挑战下这道题????
数据加载中...
 
   



关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 0.043119 second(s), 7 queries.
Copyright©2004-2024, BCCN.NET, All Rights Reserved