欧拉计划(Euler Project)——第一题到第三题
题目一:
10以下的自然数中,属于3和5的倍数的有3,5,6和9,它们之和是23.
找出1000以下的自然数中,属于3和5的倍数的数字之和。
package Blog1; public class First { /** * 10以下的自然数中,属于3和5的倍数的有3,5,6和9,它们之和是23.找出1000以下的自然数中,属于3和5的倍数的数字之和。 */ public static void main(String[] args) { int sum=0; for (int i=0;i<1000;i++){ if(i%3==0||i%5==0){ sum+=i; } } System.out.println(sum); } }
233168
本题总结:
判断语句要善于用逻辑运算符。
题目二:
斐波那契数列中的每一项被定义为前两项之和。从1和2开始,斐波那契数列的前十项为:
1, 2, 3, 5, 8, 13, 21, 34, 55, 89, ...
考虑斐波那契数列中数值不超过4百万的项,找出这些项中值为偶数的项之和。
package Blog1; import java.util.ArrayList; public class Second { /** * 斐波那契数列中的每一项被定义为前两项之和。从1和2开始,斐波那契数列的前十项为: 1, 2, 3, 5, 8, 13, 21, 34, 55, 89, ... 考虑斐波那契数列中数值不超过4百万的项,找出这些项中值为偶数的项之和。 */ public static void main(String[] args) { int a=1,b=2; int sum=0; while(b<4000000){ if(b%2==0){ sum+=b; } b=a+b; a=b-a; } System.out.println(sum); } }
本题总结
不要把问题复杂化:要目的明确,善于用while循环。
题目三:
13195的质数因子有5,7,13和29.
600851475143的最大质数因子是多少?
package Blog1; /** * 13195的质数因子有5,7,13和29.600851475143的最大质数因子是多少? */ public class Third { private static long JUG=600851475143L; public static void main(String[] args) { for(long i=1L;i<=JUG;i++){ if(JUG%i==0&&ifprime(i)){ System.out.println(i); } } } public static boolean ifprime(long temp){ boolean flag=true; if(temp%2!=0L){ for(long i=2L;i<=(temp+1)/2;i++){ if(temp%i==0L){ flag=false; } } } return flag; } }
6857
本题总结:
- int最大20亿,long型一定要加--L,否者编译通过不了
- 找出质数(int范围内)的方法优化如下
public static boolean isPrime(int a) { boolean flag = true; if (a < 2) {// 素数不小于2 return false; } else { for (int i = 2; i <= Math.sqrt(a); i++) { //循环到平方根即可 if (a % i == 0) {// 若能被整除,则说明不是素数,返回false flag = false; break;// 跳出循环 } } } return flag; } }