1.完数
一个数如果恰好等于它的因子之和,这个数称为“完数”(因子:除去这个数本身的约数),例如6=1+2+3;
18 的因子:1,2,3,6,9
编程找出1000以内的所有完数
如何判断是否完数?
(1)先找出所有的因子,并且累加它的因子
(2)判断因子之和是否和原数相等,如果相等就是完数
package main;
public class Main {
public static void main(String[] args) {
//找出1000以内的完数
for(int i=1; i< 1000;i++) {
//找出所有的因子并且累加所有的因子
int iSum = 0;
for(int j =1; j<i; j++) {
if(i%j==0) {
iSum += j;
}
}
if(i == iSum) {
System.out.println(i);
}
}
}
}
2.素数
找出1-100之间所有的素数
方法一:如何判断i是否是素数
(1)找出i的所有约数,并累加它们的和,例如:i = 5,它的约数是1和5,约数和是6;i=11,约数是1和11,和是12;i=18,约数是1,2,3,4,9,18,约数和39
(2)如果某个i 的约数和==i+1,那么i就是素数
方法二:如何判断i是否是素数
(1)找出i在[2,i-1]之间的约数个数
(2)如果这个个数是0,那么i就是素数
方法三:如何判断i是否是素数
(1)假设i是素数
boolean flag = true;//true 代表素数
(2)找i不是素数的证据
如果在[2,i-1]之间只要有一个数能够把i整除了,说明i就不是素数,修改flag = false;
(3)判断这个flag
package main;
public class Main {
public static void main(String[] args) {
//找出1-100之间的所有素数
//每一遍i的值都是不一样的,i=1,2,3,4,....
//每一遍都要判断i是否是素数,如果是,就打印i
//如何判断i是否是素数
//(1)找出i的所有约数,并累加它们的和,例如:i = 5,它的约数是1和5,约数和是6;i=11,约数是1和11,和是12;i=18,约数是1,2,3,4,9,18,约数和39
//(2)如果某个i 的约数和==i+1,那么i就是素数
//方法一:
for(int i = 1; i <= 100; i++) {
int isum = 0;
for(int j =1; j <= i; j++) {
if(i%j==0) {
isum +=j;
}
}
if(isum ==i+1) {
System.out.println(i);
}
}
System.out.println("---------------------------------");
//方法二:
//如何判断i是素数
//(1)找出i在[2,i-1]之间的约数个数
//(2)如果这个个数是0,那么i就是素数
for(int i =2; i<= 100; i++) {
int icount = 0;
for(int j = 2; j<=i-1; j++) {
if(i%j==0) {
icount++;
}
}
if(icount ==0) {
System.out.println(i);
}
}
System.out.println("---------------------------------------");
//方法三:
//(1)假设i是素数
//boolean flag = true;//true 代表素数
//(2)找i不是素数的证据
//如果在[2,i-1]之间只要有一个数能够把i整除了,说明i就不是素数,修改flag = false;
//(3)判断这个flag
for(int i =2; i<=100;i++) {
boolean flag = true;
for(int j = 2; j< i;j++) {
if(i%j ==0) {
flag = false;
break;
}
}
if(flag) {
System.out.println(i);
}
}
}
}