JAVA史密斯数的简单介绍
今天给各位分享JAVA史密斯数的知识,其中也会对进行解释,如果能碰巧解决你现在面临的问题,别忘了关注本站,现在开始吧!
本文目录一览:
java编程,输出100以内的史密斯数,高分
首先盛赞LZ写的一手漂亮的程序!代码清晰而且有条理,注释很到位~读起来真的赏心悦目~
LZ的程序共有两处错误,我在下面更正了,最终运行结果如下:
错误一:isPrime(int x) 函数,对2这个特殊的素数判断错了,应该改成这样:
错误二:sumOfFactors(int x)函数逻辑混乱,不建议递归调用,因为很容易出错,而且在这个程序里没有必要,我改成非递归的了,如下:
注意原来的 if 改成了while,去掉了递归调用和break语句。
用java写一个400以内的smith数~~~~~速求!!急!!!!!!!
public class test08 {
public static void main(String[] args) // 输出400以内的smith数
{
test08 tt = new test08();
int i, j, r, t = 0, sum = 0, sum1 = 1;
for (i = 0; i 400; i++) {
t = i / 100 + i % 100 / 10 + i % 100 % 10; // 取i的各位数字和
for (j = 2; j i; j++) {
if (i % j == 0) // 判断是否为i的一个因子
{
boolean isExist = false; // 判断是否需要重复加此素数
boolean b = tt.isSs(j); // 盘算是否是素数
if (i % (j * j) == 0 i != j * j)
isExist = true;
if (b) {
r = j % 100 / 10 + j % 100 % 10; // 取因子各位数字和
sum1 *= j; // 素数因子累乘和
sum += r; // 因子数位累加和
if (isExist)
sum += r;
}
}
}
if (sum1 == i)// 输出满足的smith数
if (t == sum)
System.out.print(i + " ");
sum1 = 1;
sum = 0;
}
}
public boolean isSs(int j) { // 单独拿出来判断是否位素数 这样逻辑清晰一些
boolean b = true;
for (int k = 2; k = Math.sqrt(j); k++) // 判断是否为素数
{
if (j % k == 0) {
b = false;
break;
}
}
return b;
}
}
java输出400以内的smith数!请高手!
我把你的代码结构改了下 你自己运行看是不是你要的效果 public class Te { public static void main(String[] args) // 输出400以内的smith数 { Te tt = new Te(); int i, j, r, t = 0, sum = 0, sum1 = 1; for (i = 0; i 400; i++) { t = i / 100 + i % 100 / 10 + i % 100 % 10; // 取i的各位数字和 for (j = 2; j i; j++) { if (i % j == 0) // 判断是否为i的一个因子 { boolean isExist = false; // 判断是否需要重复加此素数 boolean b = tt.isSs(j); // 盘算是否是素数 if (i % (j * j) == 0 i != j * j) isExist = true; if (b) { r = j % 100 / 10 + j % 100 % 10; // 取因子各位数字和 sum1 *= j; // 素数因子累乘和 sum += r; // 因子数位累加和 if (isExist) sum += r; } } } if (sum1 == i)// 输出满足的smith数 if (t == sum) System.out.print(i + " "); sum1 = 1; sum = 0; } } public boolean isSs(int j) { //单独拿出来判断是否位素数 这样逻辑清晰一些 boolean b = true; for (int k = 2; k = Math.sqrt(j); k++) // 判断是否为素数 { if (j % k == 0) { b = false; break; } } return b; } } 运行结果为: 22 58 85 94 166 218 254 265 319 326 327 355 362 381 391 398
求采纳
关于JAVA史密斯数和的介绍到此就结束了,不知道你从中找到你需要的信息了吗 ?如果你还想了解更多这方面的信息,记得收藏关注本站。
发布于:2022-11-29,除非注明,否则均为
原创文章,转载请注明出处。