首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >多重Harshad数

多重Harshad数
EN

Stack Overflow用户
提问于 2017-08-15 19:39:38
回答 3查看 4.6K关注 0票数 1
代码语言:javascript
复制
        System.out.print("Enter a number : ");
        int n = sc.nextInt();
        int c, d, sum = 0,sum1=0,n1=0,count=0;
        while(n>1)
        {
               c=n;
               while(c>0)
               {
               d = c%10;
               sum = sum + d;
               c = c/10;
               }
               if(n%sum==0)
               {
               sum1=sum;
               n1=n;
               n=n/sum;

               }
               else
               {
                   System.out.println("Not an harshad");
                   break;
               }

        }
            if(n1%sum1==0)
            System.out.println("Number is multiple harshad");
            else
            System.out.println("Number is not multiple harshad");    
    }
}

此代码对于多个哈沙德数不能正常工作。对于一个数字,它也给出了相同的输出,不是多个harshad.when,我输入108,它给出了多个哈沙德数,但当我输入8时,它也给出了多个哈沙德数。虽然8不是多个harshad数

样本输入: 6804

Ans:

6+8+0+4=18=>6804/18=378

378=> 3+7+8=18=>378/18=21

21=> 2+1=3 =>21/3=7

输入: 126输出: 126不是哈斯哈德数

EN

回答 3

Stack Overflow用户

发布于 2017-08-15 20:05:05

在外部循环的每次迭代中,您都忘记将sum重置为0。因此,只有第一次迭代计算正确的位数和。

代码语言:javascript
复制
    while(n>1) {
           sum = 0; // add this
           c=n;
           while(c>0)
           {
           d = c%10;
           sum = sum + d;
           c = c/10;
           }
           if(n%sum==0)
           {
           sum1=sum;
           n1=n;
           n=n/sum;

           }
           else
           {
               System.out.println("Not an harshad");
               break;
           }

    }
票数 1
EN

Stack Overflow用户

发布于 2017-08-15 21:32:16

  • 使用循环计数器。
  • 最后检查循环计数器(以解决您的一位数多哈沙德数问题)。
  • 还检查您的所有数字之和不能等于0(零)以避免无限循环问题。

尝试下面的代码

代码语言:javascript
复制
    Scanner sc = new Scanner(System.in);
    System.out.print("Enter a number : ");
    int num = sc.nextInt();
    int dividend=num;
    int divisor=0;
    int digit;
    int count=0;

    while(dividend>1){
        divisor=0;
        int temp=dividend;
        while(temp>0){
           digit = temp%10;
           divisor = divisor + digit;
           temp = temp/10;
        }
        if(dividend%divisor==0 && divisor!=1){
            dividend = dividend/divisor;
            count++;
        }else{
               break;
        }
    }
    if(dividend==1 && count>1){
        System.out.println("Number is Multiple Harshad");
    }else{
        System.out.println("Number is not Multiple Harshad");
    }
票数 0
EN

Stack Overflow用户

发布于 2020-12-30 22:11:07

代码语言:javascript
复制
import java.util.*;
class multiple_harshad_NUMBER {
  public static void main(String args[]) {
    Scanner sc = new Scanner(System.in);
    int i = 0, s1 = 0, d = 0, s = 0, temp = 0;
    int  n = 6804;/*lets take it as its a multiple harshad number but if you are making a program to check whether a number is multiple harshad number or not then use Scanner class.(input)*/ 
    while (n != 0) {
      temp = n;/* assigning value to temp variable as n will be 0 at the end of inner loop*/
      while (n != 0) {//loop for digit by processing
        d = n % 10;
        s = s + d;
        n = n / 10;
      }// inner looop close
      s1 = temp / s;//s1 gets the quotient 
      if (temp % s == 0 && s != 1){//condition to check if the temp(variable) is at least harshad number
        n = s1;
        s = 0;
      }
    }// outer loop close
    if (s1 == 1) {
/*since a number is a multiple harshad number if and only if the end of the snippet is 1*/
  System.out.println("Is Multiple Harshad Number");
    } 
  else {
  System.out.println("Isn't Multiple Harshad Number");
    }
  }
}
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/45692091

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档