>Java >java지도 시간 >Java의 스미스 번호

Java의 스미스 번호

PHPz
PHPz원래의
2024-08-30 16:28:28935검색

Java에는 다른 종류의 기능이 있습니다. 스미스 번호는 사용자에게 제공되는 기능 중 하나입니다. 기본적으로 스미스 수는 모든 자릿수를 더한 것이 모든 소인수(1을 제외한)의 모든 자릿수를 더한 것과 동일한 합성수(수 체계에서 밑수가 10임)일 뿐이며 이를 스미스라고 합니다. 숫자. 스미스 번호의 또 다른 이름은 농담 번호입니다. 정의에 따르면, 조건을 만족하면 모든 소수는 자연적으로 제외된다고 말할 수 있습니다. 일반적으로 스미스 수는 사용자 요구 사항과 문제 설명의 일부 요구 사항에 따라 수학에서 사용되는 수 체계의 매우 기본적인 하위 필드입니다.

무료 소프트웨어 개발 과정 시작

웹 개발, 프로그래밍 언어, 소프트웨어 테스팅 등

스미스 번호 뒤에 숨은 논리

이제 스미스 번호 뒤에 어떤 논리가 있는지 살펴보겠습니다.

스미스 번호의 논리는 매우 간단합니다. 다음 번호를 고려하면 다음과 같은 논리를 쉽게 이해할 수 있습니다.

예: 주어진 번호가 스미스 번호인지 아닌지 확인해야 한다고 가정해 보겠습니다.

주어진 숫자는 95

먼저 95의 소인수가 19와 5(5, 19)인지 알아내야 합니다

이제 숫자의 합이 9 + 5 = 14인 것을 구하세요

소인수의 합은 5 + 1 + 9 = 15

이제 두 결과를 비교해 보세요. 여기서 14는 15와 같지 않습니다. 따라서 주어진 숫자는 소수가 아닙니다.

다음과 같은 또 다른 숫자를 생각해 보겠습니다.

주어진 숫자: 58

먼저 58 = 2와 29의 소인수를 구하세요

소인수의 합 = 2 + 2 +9 = 13

주어진 숫자의 합 = 5 + 8 = 13

이제 두 결과를 비교해 보세요. 여기서 두 결과는 동일하거나 동일하다고 말할 수 있습니다. 그러면 주어진 숫자가 스미스번호라고 할 수 있습니다.

이것은 스미스 수 뒤에 숨은 매우 간단한 논리입니다. 소인계수 합과 자릿수 합만 비교하면 됩니다. 두 합이 동일하면 주어진 숫자는 스미스 번호입니다. 그렇지 않으면 그 숫자는 스미스 번호가 아닙니다.

Java에서 Smith 번호를 확인하는 방법은 무엇입니까?

이제 다음과 같이 java에서 주어진 숫자가 smith인지 아닌지 확인하는 방법을 살펴보겠습니다.

위에서 이미 스미스 번호의 다양한 예를 논의했습니다. 이제 스미스 번호를 찾는 다양한 단계를 다음과 같이 살펴보겠습니다.

1. 먼저 사용자로부터 숫자를 초기화하거나 읽어야 합니다.

2. 그런 다음 주어진 숫자의 합을 구해야 합니다.

3. 다음으로 주어진 숫자의 소인수를 찾아야 합니다.

4. 이제 소인수 자릿수의 합을 계산해 보세요.

5. 이제 주어진 숫자의 자릿수 합과 소인수의 자릿수 합을 비교해 보세요.

아. 두 합이 동일하면 주어진 숫자가 스미스 수라고 말할 수 있습니다.

ㄴ. 그렇지 않으면 합계가 다르기 때문에 주어진 숫자는 대장장이 숫자가 아닌 것으로 간주할 수 있습니다.

그래서 위에서 언급한 단계는 Java에서 Smith Number 프로그램을 구현하는 데 유용합니다.

이제 이해를 돕기 위해 자바에서 스미스 수의 다양한 예를 살펴보겠습니다.

예시 #1

코드:

import java.util.*;
public class Smith_Num
{
static int F_Sum_P_Fact(int no)
{
int j=2, add=0;
while(no>1)
{
if(no%j==0)
{
add=add+F_S_Digit(j);
no=no/j;
}
else
{
do
{
j++;
}
while(!isPrime(j));
}
}
return add;
}
static int F_S_Digit(int no)
{
int sum=0;
while(no>0)
{
sum=sum+no%10;
no=no/10;
}
return sum;
}
static boolean isPrime(int j)
{
boolean b=true;
int d=2;
while(d<Math.sqrt(j))
{
if(j%d==0)
{
b=false;
}
d++;
}
return b;
}
public static void main(String args[])
{
Scanner s_c = new Scanner(System.in);
System.out.print("Enter a number: ");
int no=s_c.nextInt();
int x = F_S_Digit(no);
int y = F_Sum_P_Fact(no);
System.out.println("addition of digit = "+x);
System.out.println("addition of prime factors digits is = "+y);
if(x==y)
System.out.print("The user enterd number is smith number.");
else
System. out.print("The user entered number is not smith number.");
}
}

설명

위 프로그램에서는 Smith Number 프로그램을 Java로 구현해 보았습니다. 여기서 우리는 먼저 소인수의 자릿수를 합하는 함수를 만들었습니다. 마찬가지로 위 프로그램에 표시된 대로 주어진 숫자에 대한 자릿수의 합을 구하는 함수도 만들었습니다. 그 후 불리언 함수를 이용하여 주어진 숫자가 소수인지 아닌지 확인하는 함수를 만들었습니다. 그런 다음 메인 함수를 작성하고, 메인 함수 내에서 사용자로부터 숫자를 받아 이미 생성한 모든 함수를 호출하고 두 합계를 비교합니다. 합이 같으면 주어진 숫자를 스미스 번호로 인쇄하고, 합이 같지 않으면 주어진 숫자를 스미스 번호가 아닌 것으로 인쇄합니다. 위 프로그램의 최종 출력은 다음 스크린샷을 사용하여 설명합니다.

예시 #2

다음과 같은 또 다른 예를 살펴보겠습니다.

코드:

import java.util.*;
public class Smith_Num_2
{
static List<Integer> F_P_Fact(int no)
{
List<Integer> output = new ArrayList<>();
for (int j = 2; no % j == 0; no = no/j)
output.add(j);
for (int j = 3; j* j <= no; j=j+2)
{
while (no % j == 0)
{
output.add(j);
no = no/j;
}
}
if (no != 1)
output.add(no);
return output;
}
static int S_Digit(int no)
{
int s= 0;
while (no > 0)
{
s =s+(no % 10);
no = no/10;
}
return s;
}
public static void main(String args[])
{
for (int no = 1; no < 5000; no++)
{
List<Integer> Fact = F_P_Fact(no);
if (Fact.size() > 1)
{
int s = S_Digit(no);
for (int fa : Fact)
s =s-S_Digit(fa);
if (s == 0)
System.out.println(no);
}
}
}
}

설명

위의 예에서는 그림과 같이 5000까지의 모든 스미스 번호를 알아내려고 합니다. 위 프로그램의 최종 출력은 다음 스크린샷을 사용하여 설명합니다.

Java의 스미스 번호

결론

이 기사를 통해 Java의 Smith Number를 배우시기 바랍니다. 위의 기사에서 우리는 Smith Number의 기본 논리를 배웠으며 Smith Number의 다양한 예도 볼 수 있습니다. 이 기사를 통해 Java에서 Smith Number를 사용하는 방법과 시기를 배웠습니다.

위 내용은 Java의 스미스 번호의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

성명:
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.
이전 기사:자바의 완전수다음 기사:자바의 완전수