大橙子网站建设,新征程启航
为企业提供网站建设、域名注册、服务器等服务
给你写一个简单的如下:
创新互联公司成都网站建设按需策划,是成都网站维护公司,为成都广告制作提供网站建设服务,有成熟的网站定制合作流程,提供网站定制设计服务:原型图制作、网站创意设计、前端HTML5制作、后台程序开发等。成都网站营销推广热线:13518219792
public class test{
public static void main(String args[]){
int i=1;
int j=1;
int sum;
for(;i=10;i++){
j=j*i;sum=sum+j;}
System.out.println("1~10的阶乘和为"+sum);
}
}
这是一到十的阶乘,用时将10换做成任何即可
前面的我就不写了,你懂的! int num=1;for(int i=1;in;i++) { num=num*i } 然后输出那个num的值就是了
对于一般的比如20以内的阶乘 可以用int 但是你这个太大了
long都不够 用double了 没有限制输出格式 所以是科学计数的 而且用double小数点后会出现误差 这个知道吧 文件名Sum.java 代码如下:
package Sum;
public class Sum{
public static void main (String[] args) {
double sum=0,sumt,i,j;
for(i=1;i=100;i++){
for(j=1,sumt=1;j=i;j++){
sumt*=j;
}
sum+=sumt;
System.out.println(i+" "+sum+" "+sumt);
}
}
}
如果实在要求这么大的阶乘 可以用数组方式解决
给你贴段代码 以前网上某位写的 忘记了 求阶乘的
import java.util.Scanner;
public class nc030{
public static void main(String[] args) throws Exception {
int[] date = new int[100000];
date[1] = 1;
int weishu = 1; // 求出来的值的位数
System.out.println("------用数组解决大数问题---------");
System.out.println("求n!的值");
System.out.print("n=");
Scanner cin = new Scanner(System.in);
int n = cin.nextInt();
for (int i = 1; i = n; i++) {
for (int j = 1; j = weishu; j++) {
date[j] = date[j] * i;
}
// 确保除最高位外的每位不大于9
for (int j = 1; j weishu; j++) {
if (date[j] = 10) {
date[j + 1] += date[j] / 10;
date[j] = date[j] % 10;
}
}
//确保最高位不大于9
while (date[weishu] = 10) {
weishu++;
date[weishu] += date[weishu - 1] / 10;
date[weishu - 1] = date[weishu - 1] % 10;
}
}
System.out.print(n + "!= ");
for (int k = weishu; k = 1; k--) {
System.out.print(date[k]);
}
System.out.println("");
}
}
启发一下就好啦~
肯定不能用int,用int的自己去试试吧,早就超过范围了。
可以用集合,保存结果的每一位,然后依次去计算。
使用BigInteger大容量运算类计算100的阶乘
一.一般算法(循环)
view plaincopy to clipboardprint?
public class Test {
public static void main(String[] args) {
int result = 1;
for (int i = 1; i = 100; i++) {
result *= i;
}
System.out.println(result);
}
}
public class Test {
public static void main(String[] args) {
int result = 1;
for (int i = 1; i = 100; i++) {
result *= i;
}
System.out.println(result);
}
}
输出结果为0,因为int无法保存下100的阶乘的结果,100的阶乘的长度至少大于50位,也要大于long,double
二.使用BigInteger大容量运算类
view plaincopy to clipboardprint?
import java.math.BigInteger;
public class Test {
public static void main(String[] args) {
BigInteger result = new BigInteger("1");//为result赋初始值,为1
for (int i = 1; i = 100; i++) {
BigInteger num = new BigInteger(String.valueOf(i));
result = result.multiply(num);//调用自乘方法
}
System.out.println(result);//输出结果
System.out.println(String.valueOf(result).length());//输出长度
}
}
import java.math.BigInteger;
public class Test {
public static void main(String[] args) {
BigInteger result = new BigInteger("1");//为result赋初始值,为1
for (int i = 1; i = 100; i++) {
BigInteger num = new BigInteger(String.valueOf(i));
result = result.multiply(num);//调用自乘方法
}
System.out.println(result);//输出结果
System.out.println(String.valueOf(result).length());//输出长度
}
}
计算结果为:93326215443944152681699238856266700490715968264381621468592963895217599993229915608941463976156518286253697920827223758251185210916864000000000000000000000000
产度:158
//java写的
import java.util.Scanner;
public class KnownTest {
public static void main(String[] args) {
Scanner sc = new Scanner(System.in);
System.out.println("输入一个数字");
int n = sc.nextInt();
System.out.println("结果是:"+f(n));
}
public static int f(int n){
int sum = 1;
for(int i = 1;i = n;++i){
sum *= i;
}
return sum;
}
}