使用Java打印1-100之间的完美数字
我不知道我的代码有什么问题。它应该打印1-100之间的所有完美数字。我尝试了嵌套for循环、do while循环和for循环。但是,代码似乎不正确使用Java打印1-100之间的完美数字,java,for-loop,nested-loops,perfect-numbers,Java,For Loop,Nested Loops,Perfect Numbers,我不知道我的代码有什么问题。它应该打印1-100之间的所有完美数字。我尝试了嵌套for循环、do while循环和for循环。但是,代码似乎不正确 class CompProject1 { public static void main() { int num, sum=0; int i; for(num=1; num<100; num++) { for(int j = 1;
class CompProject1
{
public static void main()
{
int num, sum=0;
int i;
for(num=1; num<100; num++)
{
for(int j = 1; j<=num ; j++)
{
if(num%j==0)
{
sum = sum+j;
}
}
if(sum==num)
{
System.out.println(sum);
}
}
}
}
class CompProject1 {
public static void main()
{
int num;
for(num=1; num<100; num++)
{
int sum = 0;
for(int j = 1; j<=num ; j++)
{
if(num%j==0)
{
sum = sum+j;
}
}
if(sum==num)
{
System.out.println(sum);
}
}
}
}
class CompProject1
{
公共静态void main()
{
int num,sum=0;
int i;
对于(num=1;num,您需要:
sum=0
每次循环迭代
- 迭代到
而不是这似乎是一个作业或家庭作业问题。你应该自己解决这个问题,而不是向堆栈溢出的人询问
但是,您要查找的内容有一个答案。请注意!如果输入的数字是完美数字或不是完美数字,则此代码将打印,但不会打印100以下可能是完美数字的所有数字。这是您的家庭作业。将您的代码更改为:
public static void main(String[] s1) throws Exception {
int num, sum = 0;
int i;
for (num = 1; num < 100; num++) {
for (int j = 1; j <= num - 1; j++) { // change made here
if (num % j == 0) {
sum = sum + j;
}
}
if (sum == num) {
System.out.println(sum);
}
sum = 0; // change made here
}
}
publicstaticvoidmain(字符串[]s1)引发异常{
int num,sum=0;
int i;
用于(num=1;num<100;num++){
对于(int j=1;j所以,您的代码有一些小问题,我将尝试找出它们
1.首先,sum变量应位于第一个for循环内
2.第二个循环运行的限制将是j1)您肯定需要为每次迭代重置sum变量,因此您应该在每个循环中执行int sum=0;
2) 您需要在j时进行迭代,确切的问题陈述是什么?因为您可能可以避开System.out.println(“6,28”)
@jsheeran,拜托,伙计,这是一个编程任务这是正确的答案,应该标记为这样为什么你在循环外初始化sum,因为int有缓存?看起来很难看…他实际上应该迭代到num/2,你的答案可以解决他面临的问题,但在优化的情况下不太好优化做了什么你需要打印1-100之间的完美数字?这不会有任何区别。你的否决票太荒谬了。你怎么知道这是我的?问题不在于优化,而在于正确的数学模型。如果他需要评估前1000.000个数字的值呢?1.很明显你否决了它(因为在同一时间有评论)2.我为什么要关心它是否达到1000000?问题清楚地说明了1-100。这也不是一个关于性能的问题。
class CompProject1 {
public static void main()
{
int num;
for(num=1; num<100; num++)
{
int sum = 0;
for(int j = 1; j<=num ; j++)
{
if(num%j==0)
{
sum = sum+j;
}
}
if(sum==num)
{
System.out.println(sum);
}
}
}
}
public class PerfectNumbersDemo {
public static void main(String[] args) {
IntStream.range(1, 100)
.filter(PerfectNumbersDemo::isPerfect)
.forEach(System.out::println);
}
private static boolean isPerfect(int number) {
return number == IntStream.rangeClosed(1, number / 2)
.filter(i -> number % i == 0)
.sum();
}
}
public class factors{
public static void main(String args[]){
int sum=0;
for(int k=2;k<=30;k++){
for(int i=1;i<k;i++)
{
if(k%i==0)
sum=sum+i;
}
if(k==sum)
System.out.println(sum);
sum=0; //sum=0 is very important.
}
}
6
28