用陣列的方式寫出 n階乘 |
尚未結案
|
doubleface
一般會員 發表:4 回覆:0 積分:0 註冊:2003-11-18 發送簡訊給我 |
因為用長整數寫,太大的階乘會出錯,所以用陣列寫。(最少要到30階)
其中的陣列方式大概如以下的兩數相乘程式。
各位大大能幫忙試試嗎?? // Multiplication, 整數乘法 A * B = C
import java.io.*;
public class mul
{
public static void main(String args[]) throws IOException
{ int numA[]=new int[3];
int numB[]=new int[3];
int numC[]=new int[6];
int M[]=new int[4];
int num1,num2;
String str1,str2; BufferedReader buf;
buf=new BufferedReader(new InputStreamReader(System.in));
System.out.print("Input first number:");
str1=buf.readLine();
num1=Integer.parseInt(str1);
System.out.print("Input second number:");
str2=buf.readLine();
num2=Integer.parseInt(str2);
int numtmp=10;
for (int i=0; i<3; i )
{
numA[i]=num1%numtmp;
numB[i]=num2%numtmp;
num1=num1/numtmp;
num2=num2/numtmp;
}
System.out.println("The integer A is " numA[2] numA[1] numA[0]);
System.out.println("The integer B is " numB[2] numB[1] numB[0]); // Multiplication, A[] * B[] = C[]
for (int i=0; i<6; i ) numC[i]=0;
int tag,multemp,addtemp,tagm;
for (int i=0; i<3; i )
{
tag=0;
for (int j=0; j<3; j )
{
multemp=numA[j]*numB[i] tag;
M[j]=multemp%numtmp;
tag = multemp/numtmp;
}
M[3]=tag;
System.out.println("M is " M[3] M[2] M[1] M[0]);
tagm=0;
for (int j=0; j<4; j )
{
addtemp=numC[i j] M[j] tagm;
numC[i j]=addtemp%numtmp;
tagm=addtemp/numtmp;
}
numC[i 3]=numC[i 3] tagm;
}
System.out.println("The A * B is " numC[5] numC[4] numC[3] numC[2] numC[1] numC[0]);
}
}
|
本站聲明 |
1. 本論壇為無營利行為之開放平台,所有文章都是由網友自行張貼,如牽涉到法律糾紛一切與本站無關。 2. 假如網友發表之內容涉及侵權,而損及您的利益,請立即通知版主刪除。 3. 請勿批評中華民國元首及政府或批評各政黨,是藍是綠本站無權干涉,但這裡不是政治性論壇! |