二维数组求和:
int sum=0;
int arr[][]=new int[][] {{1,2,3},{4,5,6},{7,8,9}};
for(int i=0;i<arr.length;i++) {//控制行数
for(int j=0;j<arr[i].length;j++) {//遍历每一个数
sum=sum+arr[i][j];
System.out.print(arr[i][j]+" " );
}System.out.println();
}
System.out.print("总和:"+sum);
System.out.println();
}
求1000以内的完数://一个数如果恰好等于它的因子之和,这个数就称为"完数"。(因子:除去这个数本身正的约数)
//例如6=1+2+3
int num = 0;
for(int i=1;i<=1000;i++) {
//每执行完一次如下循环,就会将所有的因数加到num中
for(int j=1;j<i;j++) {
if(i%j==0) {//取余如果没有余数 则说明是i的因数 则加到num中 num=num+j;
}
}
if(i==num) {
System.out.println(i);
}
num=0;
}
}
杨辉三角
int yanghui[][]=new int[10][];
for(int i=0;i<yanghui.length;i++) {
yanghui[i]=new int[i+1];//一共十行 每一行逐次加一个数
}
for(int i=0;i<yanghui.length;i++) {
for(int j=0;j<yanghui[i].length;j++) {
yanghui[i][0]=yanghui[i][i]=1;//每一行的开的头和结尾都是1
if(i>1&&j>0&&j<i) {
yanghui[i][j]=yanghui[i-1][j]+yanghui[i-1][j-1];//中间的数都是上一行自己头上的那个数加上头顶左边一个数的和
}
}
}
//遍历数组
for(int i=0;i<yanghui.length;i++) {
for(int j=0;j<yanghui[i].length;j++) {
System.out.print(yanghui[i][j]+"\t");
}
System.out.println();
}
}
}
求100以内的质数
方法一
boolean flag=false;
int x=0;
long start=System.currentTimeMillis();//获取当前的毫秒数
for (int i=2;i<=100;i++) {//实现100以内的自然数(质数)的遍历
for(int j=2;j<i;j++) {//Math.sqrt 数学算法 可以节省大量运行时间
//如何判断i是否是一个质数
if(i%j==0) {//质数的定义只有1和他自己本身如果 如果 i % j(小于i的所有数)==0则可以证明不是质数
flag=true;
break;
}
}
if(flag==false){// if(flag==false) {
System.out.println(i);
x=x+1;
}
flag=false;//赋值false接着循环
}
System.out.println("素数一共有:"+x);
long end=System.currentTimeMillis();
System.out.println("所花费的时间;"+(end -start));//打印结束时间到开始时间的毫秒数 加上break 加上Moth.sqrt 可以节省时间
方法二
l:for(int i=2;i<100;i++) {//打上一个标签 l:
for(int j=2;j<i;j++) {
if(i%j==0) {
continue l;//如果不是质数直接跳出循环执行下一循环
//如果是质数相当于此步骤没有被执行
}
}//
System.out.println(i);
}
}
兔子练习题
//:古典问题:有一对兔子,从出生后第3个月起每个月都生一对兔子,小兔子长到第三个月后每个月又生一
//对兔子,假如兔子都不死,问每个月的兔子总数为多少?第一个月只有一对兔子,
//第二个月还是只有一对兔子,第三个月,就有两对了,第四个月3对,第五个月5对,
//第六个月8对,第七个月是13对。。。。。。规律出来了,你们发了没?
月数 :1 2 3 4 5 6 7 8 9 10 11 12
对数 :1 1 2 3 5 8 13 21 34 55 89 144
int arr[]=new int[13];
arr[0]=1;
arr[1]=1;
System.out.println("第一个月为1对两只");
System.out.println("第二个月为1对两只");
for(int i=2;i<=12;i++) {
arr[i]=arr[i-1]+arr[i-2];//对数的归律是在第3个月开始 后面的是前面两个的和
System.out.println("第"+i+"个月的对数为"+arr[i]+",只数为"+2*arr[i]);
}
水仙花
//输出所有的水仙花数,所谓水仙花数是指一个3位数,其各个位上数字立方和等于其本身。
//例如:153 =1*1*1+3*3*3+5*5*5
for(int i=100;i<1000;i++) {
int j1=i/100;//百位数
int j2=(i-j1*100)/10;//十位数
int j3=i%10;//个位数
if(i==j1*j1*j1+j2*j2*j2+j3*j3*j3) {
System.out.println(i+" "+"是水仙花数");
}
}
IF 语句排序
Scanner s=new Scanner(System.in);
System.out.println("请输入第一个整数:");
int num1=s.nextInt();
System.out.println("请输入第二个整数:");
int num2=s.nextInt();
System.out.println("请输入第三个整数:");
int num3=s.nextInt();
if(num1>num2) {//从小到大
if(num3>num1) {
System.out.println(num2+"<"+num1+"<"+num3);
}else if(num3<num2) {
System.out.println(num3+"<"+num2+"<"+num1);
}else {
System.out.println(num2+"<"+num3+"<"+num1);
}
}else {//num1<num2
if(num3>num2) {
System.out.println(num1+"<"+num2+"<"+num3);
}else if(num3<num1) {
System.out.println(num3+"<"+num1+"<"+num2);
}else {
System.out.println(num1+"<"+num3+"<"+num2);
}
}