java课堂作业(四)

1、思路分析

首先应该得到一个数的因子,怎么得到呢?一个个数的试

定义这个数为a,从1试到a-1

1 public static int factorSumMethod(int a){
2             int factorSum = 0;
3             for(int i=1;i<a;i++){
4                 if(a%i==0){
5                     factorSum+=i;
6                     }
7                 }
8             return factorSum;
9             }
1             for(int j=1;j<=1000;j++){
2                 if(j==factorSumMethod(j)){
3                     System.out.println(j);
4                     }
5                 }

第一个方法为得到任意一个数的因子之和,第二个循环是从1到1000判断是否为完数。

运行结果

2、思路分析

首先要得到输入的这个数以内的所有质数,我们先从里面往外想,如何判断一个数是否为质数

质数的条件是:没有除1和自身以外的因子

也就是说判断是否整除(余数是否为0)的那个条件不能为真,要是为真就不是质数了

定义这个数为 a 从2遍历到 a-1

boolean prime(int a){

if(a==1||a==2){

return true;

}

for(int i=2;i<=a-1;i++){

if(a%i==0){

return false;

}

}

return true;//只要执行到这里一定是质数

}

定义输入的数为 b  首先要找出b以内的所有质数

循环从1到b-1   得到的每个质数和其他质数相加一遍,看是否等于b

int[] prime;

int i = 0;

for(int j=1;j<b;j++){

if(prime(j)){

prime[i++]=j;

}

}

for(){

 

}

不会了。。。

从网上找的100以内的:

 1 public static boolean Pan(int m) { // 定义静态返回为布尔型的函数Pan
 2             for(int i=2; i <= Math.sqrt(m); i++) { // 判断是否为素数
 3                 if(m % i == 0)//判断素数这个很简单,这个数除以从2开始到小于等于这个数的平方根的最大整数,如果余数为0,就不是素数
 4                     return false;//Math.sqrt(m)这个是开平方,%是取余,false你都拼错了
 5             }
 6             return true;
 7         }
 8 
 9         public static void main(String[] args) {
10             int n=0;//这里应该是n吧,看看你写的
11             for(int i=6; n <= 100; n+=2) {//n从0开始,每次自增2,就是都是偶数了;n <= 100;小于等于100,n+=2每次自增2
12                 for(int a=3; a <= n / 2; a+=2) {//因为偶数不是质数,偶数-偶数还是偶数,所以a从3开始就可以了,每次自增2,a就都是奇数
13                     if((Pan(a)) && (Pan(n - a))) {//先判断a是不是质数,再判断n-a是不是质数
14                         System.out.print(n + "=" + a + "+" + (n - a) + "\t\t");
15                         i++;//这个i没啥用,就是控制输出换行的
16                         break;//如果求出两个素数了,就跳出循环,计算下一个数了
17                     }
18                 }
19                 if(i % 4 == 0)
20                     System.out.println();
21             }
22         }

 

posted @ 2013-08-27 20:26  董文博  阅读(222)  评论(0编辑  收藏  举报