设为首页 加入收藏

TOP

百度的笔试算法题以及求解
2014-11-23 22:22:27 来源: 作者: 【 】 浏览:2
Tags:百度 笔试 算法 以及 求解

中午去了百度笔试,2个小时,一道改错题,三道算法题,一道工程设计题。
可以说,这是我遇见的最变态的笔试。回来以后很不爽,没吃晚饭,又再琢磨了一下其中的算法题,现在给出我的答案。
题目1:任何自然数都可以被表示为某些素数的乘积,比如6 = 2 × 3,那么求出分解出的这些因子的和的最小值是多少?
要求:这些因子不包含1或者自然数本身,也就是说6不能被分解成1×6,只能被分解成2×3;如果这个自然数是一个素数,那么返回这个自然数本身;
下面给出我的求解(百度要求用C写,但是我用Java写的):
import java.io.*;
public class MaxSum {
public static void main(String[] argus)
{
System.out.println(“Please input the value”);
InputStreamReader isr = new InputStreamReader(System.in);
BufferedReader br = new BufferedReader(isr);
int value = 0;
try
{ value = Integer.parseInt(br.readLine());
System.out.println(“You have input the value :” + value);
}
catch(Exception e)
{
e.printStackTrace();
}
getSum(value);
}
public static void getSum(int n)
{
int i = 2;
while(n/i >= 1)
{
for(i = 2; i <= n; i++)
{
if(n%i == 0)
{
System.out.println(i);
n = n/i;
break;
}
}
if(n == 1)
break;
}
}
}
例如,输入自然数150,得到下面的结果:
You have input the value :150
2
3
5
5
可以看到得到的和是:15,应该就是最小值了,但是我问了数学专业的人,据说没有这个方面的定理或者推论说明将一个自然数分解成素数,而这些素数的和就是这个自然数因子和的最小值。现在比较困惑,请高人指点,或者大家还有什么更好的算法提提意见。


】【打印繁体】【投稿】【收藏】 【推荐】【举报】【评论】 【关闭】 【返回顶部
分享到: 
上一篇rowid和rownum有什么不同? 下一篇软件系统的测试流程是什么?

评论

帐  号: 密码: (新用户注册)
验 证 码:
表  情:
内  容: