묻고답하기
page_full_width" class="col-xs-12" |cond="$__Context->page_full_width">
자바 기초 관련질문인데염..
2005.10.03 01:31
두 수를 읽고 .. 두 수 를 음수, 양수 0, 으로 판별하여.. 화면에 출력하고..
음수 일경우 양수로 전환하여..
합성수, 소수 여부를 판단하여 출력하고...
합성수이면 약수를 구함
최대 공약수 최소 공배수를 구함..
위의 ... 내용의 숙제인데... 기냥.. 제가 아는 데로 소스는 아래에 짜봤는데..
결과가.. 음수를 양수로 전환하지 못하고..
공약수가 음수로 출력이 되거염..
1-9까지의 숫자로 입력시..
합성수 와 소수 여부를 판단하지 못하는.. 문제점이 발견되었는데.
도데체 어떤점이 잘못되었는지 알길이 없네요...
여러 고수님의 자문 부탁드립니다. ..
class MinMaxty{
public static void main(String args[]) {
int n = Integer.parseInt(args[0]);// 키보드에서 입력받는 숫자의 기억장소
int m = Integer.parseInt(args[1]);
int k=0;
int h=0;
// 키보드 에서 입력받은 수를 양수로 전환하여 저장되는 임의기억장소
int i;
// 최소 공배수, 공약수 공식구할때 증감연산자
int g;
int y;
int v=0;
int r=0;
// 합성수 판별시 쓰임
// 왼쪽 입력 숫자 음수 양수 0 판별
if(n<0 || n>0 || n==0) {
if (n<0){
k=n*(-1);
System.out.println(n + "은 음수 입니다. ");
}
else if (n>0){
k=n;
System.out.println(n + "은 양수 입니다. ");
}
else if (n==0){
k=n;
System.out.println(n + "은 0 입니다. ");
}
}
else{
k=n;
System.out.println("왼쪽 잘못된 숫자 이므로 연산이 잘못 나올 수 있습니다. ");
}
// 오른쪽 입력 숫자 음수 양수 0 판별
if (m<0 || m>0 || m==0){
if (m<0){
h=m*(-1);
System.out.println(m + "은 음수 입니다. ");
}
else if (m>0){
h=m;
System.out.println(m + "은 양수 입니다. ");
}
else if (m==0){
h=m;
System.out.println(m + "은 0 입니다. ");
}
}
else{
h=m;
System.out.println("오른쪽수는 잘못된 숫자 이므로 연산이 잘못 나올 수 있습니다. ");
}
// 왼쪽수 합성수 여부 구하기
for(g=2;g<=k-1;g++){
r=k%g;
if (r==0)// 0합성수
{
System.out.println("왼쪽 수는 합성수");
break;
}
else if (r==1) // 1 소수
{
System.out.println("왼쪽 수는 소수입니다.");
break;
}
else // 예외규정
{
System.out.println("왼쪽 수는 잘못 입력된 수입니다.");
break;
}
}
//오른쪽 수 합성수 여부 구하기
for(y=2;y<=h-1;y++){
v=h%y;
if (v==0) // 0합성수
{
System.out.println("오른쪽 수는 합성수");
break;
}
else if (v==1) // 1 소수
{
System.out.println("오른쪽 수는 소수입니다.");
break;
}
else // 예외규정
{
System.out.println("오른쪽 수는 잘못 입력된 수입니다.");
break;
}
}
//최소 공배수 구하기
for (i=1; i<=h*k ;i++){
if((i%k==0)&&(i%h==0))
break;
}
System.out.print(" 최소공배수는 " + i + "입니다. ");
//최대 공약수 구하기
for(i=n; i>=1 ; i--){
if ((h%i==0)&&(k%i==0))
break;
}
if(i==1)
System.out.print(" 최대공약수는 없어요");
else
System.out.print(" 최대공약수는 " + i + "입니다. ");
}
}
음수 일경우 양수로 전환하여..
합성수, 소수 여부를 판단하여 출력하고...
합성수이면 약수를 구함
최대 공약수 최소 공배수를 구함..
위의 ... 내용의 숙제인데... 기냥.. 제가 아는 데로 소스는 아래에 짜봤는데..
결과가.. 음수를 양수로 전환하지 못하고..
공약수가 음수로 출력이 되거염..
1-9까지의 숫자로 입력시..
합성수 와 소수 여부를 판단하지 못하는.. 문제점이 발견되었는데.
도데체 어떤점이 잘못되었는지 알길이 없네요...
여러 고수님의 자문 부탁드립니다. ..
class MinMaxty{
public static void main(String args[]) {
int n = Integer.parseInt(args[0]);// 키보드에서 입력받는 숫자의 기억장소
int m = Integer.parseInt(args[1]);
int k=0;
int h=0;
// 키보드 에서 입력받은 수를 양수로 전환하여 저장되는 임의기억장소
int i;
// 최소 공배수, 공약수 공식구할때 증감연산자
int g;
int y;
int v=0;
int r=0;
// 합성수 판별시 쓰임
// 왼쪽 입력 숫자 음수 양수 0 판별
if(n<0 || n>0 || n==0) {
if (n<0){
k=n*(-1);
System.out.println(n + "은 음수 입니다. ");
}
else if (n>0){
k=n;
System.out.println(n + "은 양수 입니다. ");
}
else if (n==0){
k=n;
System.out.println(n + "은 0 입니다. ");
}
}
else{
k=n;
System.out.println("왼쪽 잘못된 숫자 이므로 연산이 잘못 나올 수 있습니다. ");
}
// 오른쪽 입력 숫자 음수 양수 0 판별
if (m<0 || m>0 || m==0){
if (m<0){
h=m*(-1);
System.out.println(m + "은 음수 입니다. ");
}
else if (m>0){
h=m;
System.out.println(m + "은 양수 입니다. ");
}
else if (m==0){
h=m;
System.out.println(m + "은 0 입니다. ");
}
}
else{
h=m;
System.out.println("오른쪽수는 잘못된 숫자 이므로 연산이 잘못 나올 수 있습니다. ");
}
// 왼쪽수 합성수 여부 구하기
for(g=2;g<=k-1;g++){
r=k%g;
if (r==0)// 0합성수
{
System.out.println("왼쪽 수는 합성수");
break;
}
else if (r==1) // 1 소수
{
System.out.println("왼쪽 수는 소수입니다.");
break;
}
else // 예외규정
{
System.out.println("왼쪽 수는 잘못 입력된 수입니다.");
break;
}
}
//오른쪽 수 합성수 여부 구하기
for(y=2;y<=h-1;y++){
v=h%y;
if (v==0) // 0합성수
{
System.out.println("오른쪽 수는 합성수");
break;
}
else if (v==1) // 1 소수
{
System.out.println("오른쪽 수는 소수입니다.");
break;
}
else // 예외규정
{
System.out.println("오른쪽 수는 잘못 입력된 수입니다.");
break;
}
}
//최소 공배수 구하기
for (i=1; i<=h*k ;i++){
if((i%k==0)&&(i%h==0))
break;
}
System.out.print(" 최소공배수는 " + i + "입니다. ");
//최대 공약수 구하기
for(i=n; i>=1 ; i--){
if ((h%i==0)&&(k%i==0))
break;
}
if(i==1)
System.out.print(" 최대공약수는 없어요");
else
System.out.print(" 최대공약수는 " + i + "입니다. ");
}
}