JAVA史密斯数的简单介绍

博主:adminadmin 2022-11-29 22:21:07 100

今天给各位分享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史密斯数和的介绍到此就结束了,不知道你从中找到你需要的信息了吗 ?如果你还想了解更多这方面的信息,记得收藏关注本站。

The End

发布于:2022-11-29,除非注明,否则均为首码项目网原创文章,转载请注明出处。