上一篇给大家一些CSDN编程挑战题目,现在我就先公布一题我写的参考程序供大家参考下,如果有更好的参考程序欢迎大家给我留言:
题目:
9. 如果一个数能够被组成它的各个非0数字整除,则称它是完美数。
例如:1-9都是完美数,10,11,12都是完美数,但是13就不是完美数(因为13不能被组成它的数字“1”和“3”整除)。
现在给定正整数x,y,求x和y之间(包含x和y)一共有多少个完美数。输入数据1<=x<=y<=2000000000。
例如: x = 1, y = 13,输出12; x = 13,y = 13,输出0; x = 100,y = 1000,输出106。
参考程序:
public class Test2 {
public static int result(long x, long y) {
//用于记录完美数个数
int sum = 0;
//是否是完美数标志
boolean flag;
for(; x<=y; x++) {
flag = false;
//把接收到的x转换为字符串方便得到各个数位上的数字
String strX = String.valueOf(x);
for(int i=0; i<strX.length(); i++) {
char c = strX.charAt(i);
//把char转换成int类型
int index = c - 48;
if(index == 0) {
continue;
}
if(x % index != 0) {
flag = true;
break;
}
}
if(!flag) {
sum++;
}
}
return sum;
}
public static void main(String[] args) {
long begin = System.currentTimeMillis();
System.out.println(result(100,1000));
long end = System.currentTimeMillis();
//测试总共运行时间
System.out.println("总共运行:"+ (end - begin) + " ms");
}
}