package homework05;
import java.math.BigInteger;
public class Ch07_3 {
public static double factorial(int n) //求阶乘函数
{
if(n==0) return 1;
else return n* factorial(n-1);
}
public static BigInteger factorial2(int n){
BigInteger bigInt=null;
if(n==0) {
bigInt=new BigInteger("1");
return bigInt;
}
else{
bigInt=new BigInteger(Integer.toString(n));
return bigInt.multiply(factorial2(n-1));
}
}
public static void main(String[] args) {
/*4、计算1+2!+3!+4!+···从第100项到200项之和*/
double f=0;
for(int k=100;k<=200;k++){
f+=factorial(k);
}
System.out.println("1+2!+3!+4!+···从第100项到200项之和:"+f); //此时输出的值是Infinity
// Infinity表示正无穷大,即大于dOUble类型所能表示的最大数值。负无穷大将输出-Infinity.
// 实际上,任何计算结果只要超出double类型所能表示的最大数值,就会产生这样的结果。
//故使用大整数来处理。
BigInteger result=new BigInteger("0");
for(int k=100;k<=200;k++){
result=result.add(factorial2(k));
}
System.out.println("1+2!+3!+4!+···从第100项到200项之和:"+result);
}
}
package homework05;
import java.math.BigInteger;
public class Ch07_3 {
public static double factorial(int n) //求阶乘函数
{
if(n==0) return 1;
else return n* factorial(n-1);
}
public static BigInteger factorial2(int n){
BigInteger bigInt=null;
if(n==0) {
bigInt=new BigInteger("1");
return bigInt;
}
else{
bigInt=new BigInteger(Integer.toString(n));
return bigInt.multiply(factorial2(n-1));
}
}
public static void main(String[] args) {
/*4、计算1+2!+3!+4!+···从第100项到200项之和*/
double f=0;
for(int k=100;k<=200;k++){
f+=factorial(k);
}
System.out.println("1+2!+3!+4!+···从第100项到200项之和:"+f); //此时输出的值是Infinity
// Infinity表示正无穷大,即大于dOUble类型所能表示的最大数值。负无穷大将输出-Infinity.
// 实际上,任何计算结果只要超出double类型所能表示的最大数值,就会产生这样的结果。
//故使用大整数来处理。
BigInteger result=new BigInteger("0");
for(int k=100;k<=200;k++){
result=result.add(factorial2(k));
}
System.out.println("1+2!+3!+4!+···从第100项到200项之和:"+result);
}
}
结果:
1+2!+3!+4!+···从第100项到200项之和:Infinity
1+2!+3!+4!+···从第100项到200项之和:792621072814943158937574954417696054502273470568077747007887743862285047941581535541498718312275086275679893343076013862361579680670972527976009279036348551929550827607601145450876014530359530008733947699274904382825444692112993342058966668017369617374101405221613980910401559347844227172278387932925351155828685624342954436057587785914951951445917696000000000000000000000000
此题正确与否有待验证。
view plaincopy to clipboardprint?
package homework05;
import java.util.HashSet;
import java.util.Iterator;
/*
* 题目:有集合A={1,2,3,4}和B={1,3,7,9,11},编写一个应用程序输出A和B交集、并集和差集。
*/
public class Ch07_4 {
public static void displaySet(HashSet<Integer> temp){
Iterator<Integer> iter=temp.iterator();
while(iter.hasNext()){
Integer te=(Integer) iter.next();
System.out.print(te.intValue()+"/t");
}
System.out.println();//换行。
}
public static void main(String[] args) {
Integer[] a={1,2,3,4};
Integer[] b={1,3,7,9,11};
HashSet<Integer> A=new HashSet<Integer>();
HashSet<Integer> B=new HashSet<Integer>();
for(int i=0;i<a.length;i++){ //初始化集合A
A.add(a[i]);
}
for(int i=0;i<b.length;i++){ //初始化集合B
B.add(b[i]);
}
HashSet<Integer> tempSet=(HashSet<Integer>)A.clone(); //作为中间变量 保存集合A的原始值。
A.addAll(B); //并集
System.out.print("输出A和B并集的结果:");
displaySet(A); //输出结果。
A=(HashSet<Integer>)tempSet.clone();
A.retainAll(B); //交集
System.out.print("输出A和B交集的结果:");
displaySet(A); //输出结果。
A=(HashSet<Integer>)tempSet.clone();
A.remove(B); //交集
System.out.print("输出A和B差集的结果:");
displaySet(A); //输出结果。
}
}
package homework05;
import java.util.HashSet;
import java.util.Iterator;
/*
* 题目:有集合A={1,2,3,4}和B={1,3,7,9,11},编写一个应用程序输出A和B交集、并集和差集。
*/
public class Ch07_4 {
public static void displaySet(HashSet<Integer> temp){
Iterator<Integer> iter=temp.iterator();
while(iter.hasNext()){
Integer te=(Integer) iter.next();
System.out.print(te.intValue()+"/t");
}
System.out.println();//换行。
}
public static void main(String[] args) {
Integer[] a={1,2,3,4};
Integer[] b={1,3,7,9,11};
HashSet<Integer> A=new HashSet<Integer>();
HashSet<Integer> B=new HashSet<Integer>();
for(int i=0;i<a.length;i++){ //初始化集合A
A.add(a[i]);
}
for(int i=0;i<b.length;i++){ //初始化集合B
B.add(b[i]);
}
HashSet<Integer> tempSet=(HashSet<Integer>)A.clone(); //作为中间变量 保存集合A的原始值。
A.addAll(B); //并集
System.out.print("输出A和B并集的结果:");
displaySet(A); //输出结果。
A=(HashSet<Integer>)tempSet.clone();
A.retainAll(B); //交集
System.out.print("输出A和B交集的结果:");
displaySet(A); //输出结果。
A=(HashSet<Integer>)tempSet.clone();
A.remove(B); //交集
System.out.print("输出A和B差集的结果:");
displaySet(A); //输出结果。
}
}
运行结果:
输出A和B并集的结果:1 2 3 4 7 9 11
输出A和B交集的结果:1 3
输出A和B差集的结果:1 2 3 4
本文来自CSDN博客,转载请标明出处:http://blog.csdn.net/youshini/archive/2010/03/25/5415460.aspx