日常小练习 十一月 16, 2020 3049 寻找完数12一个数如果恰好等于它的因子之和, 这个数就称为” ” 完数” ”。 例如 6 = 1+2+3 。 编程找出1000 以内的所有完数。 12345678910111213141516171819202122public static void main(String[] args) { for(int i = 2;i<1000;i++){ int s= 0; for(int j =1;j<i;j++){ if(i%j == 0){ s+=j; } } if(s==i){ System.out.print(i+"是完数--"); for(int a=1; a<i;a++){ if(i%a == 0){ System.out.print(a); System.out.print(" "); } } System.out.println(); } } } 1快速排序O(nlogn) 12345678910111213141516171819202122232425262728public static void quickSort(int[] arr,int low, int high){ int temp, t,i,j; if(low>high){ return; } temp = arr[low]; i = low; j = high; while (i < j) { while(temp<= arr[j] && i<j){ j -- ; } while(temp>= arr[i] && i<j){ i ++ ; } if(i<j){ t = arr[j]; arr[j] = arr[i]; arr[i] = t; } } arr[low] =arr[i]; arr[i] = temp; quickSort(arr,low,j-1); quickSort(arr,j+1,high); } 1冒泡排序(优化) 123456789101112131415161718192021public static void mpSort(int[] arr) { int temp = 0; int len = arr.length -1; int lastTemp = 0; // 记录最后一次交换的位置 for (int i = 0; i < arr.length - 1; i++) { boolean flag = true; //标志位 for (int j = 0; j < len; j++) { if (arr[j] > arr[j + 1]) { temp = arr[j + 1]; arr[j + 1] = arr[j]; arr[j] = temp; flag = false; lastTemp = j; } } len = lastTemp; if (flag) { return; //没有发生交换说明已经排好序 } } } 1杨辉三角 12345678910111213141516171819202122232425public static void main(String[] args) { int num = 10; int a[][] = new int[num][num]; //让每一行的第一个数字为1 for (int i = 0; i < num; i++) { a[i][0] = 1; } //将第一行的其它数字变为0 for (int i = 0; i < num - 1; i++) { a[0][i + 1] = 0; } //计算除第一个数字外的其他的数字 for (int i = 1; i < num; i++) { for (int j = 1; j <= i; j++) { a[i][j] = a[i - 1][j] + a[i - 1][j - 1]; } } //打印图样 for (int i = 0; i < num; i++) { for (int j = 0; j <= i; j++) { System.out.print(" " + a[i][j]); } System.out.println(); } } 本文作者:wangb 本文链接:http://xywangb.cn/2020/11/16/%E7%BB%83%E4%B9%A0%E6%9C%AC/index.html 版权声明:本博客所有文章均采用 BY-NC-SA 许可协议,转载请注明出处! 杂物练习 数据库功能sql记录 手写了一个锁 查看评论