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 }