作为一个计算机菜鸟,学校里的C语言没学好...在外面报了个班,开始学java,希望记录学习的点点滴滴.
一.题目:古典问题:有一对兔子,从出生后第3个月起每个月都生一对兔子,小兔子长到第三个月后每个月又生一对兔子,假如兔子都不死,问每个月的兔子总数为多少?
1.程序分析: 兔子的规律为数列1,1,2,3,5,8,13,21....
1 public static void main(String[] args) { 2 int a[]=new int[100]; 3 a[0]=0; 4 a[1]=1; 5 sc=new Scanner(System.in); 6 int i=sc.nextInt(); 7 for(int n=1;n<=i;n++) 8 { 9 a[n+1]=a[n-1]+a[n]; 10 11 } 12 System.out.println(a[i]); 13 }
二.题目:将一个正整数分解质因数。例如:输入90,打印出90=2*3*3*5。
程序分析:对n进行分解质因数,应先找到一个最小的质数k,然后按下述步骤完成:
(1)如果这个质数恰等于n,则说明分解质因数的过程已经结束,打印出即可。
(2)如果n<>k,但n能被k整除,则应打印出k的值,并用n除以k的商,作为新的正整数你n,重复执行第一步。
(3)如果n不能被k整除,则用k+1作为k的值,重复执行第一步。
public static void main(String[] args) { // TODO Auto-generated method stub int k=0; int m=90; for(int i=2;i<=m;i++) { int flag=0; for(int j=2;j<=i-1;j++) { if(i%j==0) { flag++; } } if(flag==0) { k=i;//将素数i赋给k } if(m%k==0) { System.out.println(k); m=m/k; } }
各位路过的大神,如果有更好的方法,请指教,谢谢