1加到100的阶乘Python(python1到10的阶乘求和用while)

http://www.itjxue.com  2023-03-30 13:44  来源:未知  点击次数: 

使用Python编程,求1~100所有偶数的阶乘。

total?=?1

for?num?in?range(1,101):

????if?num?%?2?==?0:

????????total?=?total?*?num

print(total)?

#其实一楼答案基本都对了,就是range默认是从0开始的,

#而0对2的求余也是0,所以答案永远是0,设置一个开始值为1,或者2就行了

python语音写函数计算1到100的阶乘之和

def factorial(n):

if n = 1:

return 1

else:

return n * factorial(n - 1)

the_range = range(1, 100)

the_list = [factorial(a) for a in the_range]

sum = reduce(lambda x,y: x+y, the_list)

print sum

编写1到100的阶乘和怎么写?

#include iostream

#include string

using namespace std;

//以下是加法

//让位数相同的函数

void size(string s1, string s2) //在头位置加0,达到相同位数

{

string s3;

int n = 0;

int i = 0;

if (s1.size() s2.size())

{

n = s1.size() - s2.size();

while (n)

{

s3.insert(i++, "0");

--n;

}

s3.append(s2); //拼接成员函数

s2.assign(s3); //赋值成员函数

}

else

{

n = s2.size() - s1.size();

while (n)

{

s3.insert(i++, "0");

--n;

}

s3.append(s1); //拼接成员函数

s1.assign(s3); //赋值成员函数

}

}

//大数加法

string plus1(string s1, string s2) //加法

{

if (s1.size() != s2.size()) //判断是否位数相同

{

size(s1, s2);

}

int i = 0; //标记

string sta, stb;

for (i = s1.size() - 1; i = 0; i--) //将s1倒插入到sta对象中

sta.push_back(s1[i]);

for (i = s2.size() - 1; i = 0; i--) //将s2倒插入到stb对象中

stb.push_back(s2[i]);

string stc; //stc用来存放计算结果

int temp1 = 0; //标记1,用来计算相加结果

int temp2 = 0; //标记2,用来存放进位结果

for (temp2 = 0, i = 0; i = sta.size(); i++)

{

if ((sta[i]) + (stb[i]) 57) //当值小于57表示,没有相加的数

temp1 = (sta[i]) + (stb[i]) - 96 + temp2; //-96表示ASCII中字符与数字转换(48 = 字符0)

else

temp1 = temp2;

stc.push_back((temp1 % 10) + 48); //倒插入到stc中,+48表示从数字转换为字符

temp2 = temp1 / 10; //计算 进多少位数

}

return stc;

}

//以下是阶乘所用函数

//进位函数

void push(string s1, int temp1) //进位函数

{

int temp2;

while (temp1) //这个循环表示如果进10位就添加2位,进100位添加3位,以此类推(如果进13位,就把3和1插入,如进456位就把6,5,4顺序插入)

{

temp2 = temp1 % 10 + 48; //+48表示转换为字符

temp1 /= 10;

s1.push_back(temp2);

}

}

//计算阶乘

string factorial(int n) //计算阶乘

{

string s1 = "1"; //阶乘是从1开始计算

int i = 0; //标记1

int j = 0; //标记2

int temp1 = 0; //标记3,用来计算相加结果

int temp2 = 0; //标记4,用来存放进位结果

for (i = 2; i = n; i++)

{

temp1 = 0;

for(j = 0; j s1.size(); j++)

{

temp2 = ((s1[j]) - 48) * i + temp1; //存储的是ASCII表示数字(ASCII范围是48-57)。-48表示转换为可用于计算数字,

s1[j] = temp2 % 10 + 48; //%10可求到进位后的个位。+48表示转换为ASCII字符在存储进去

temp1 = temp2 / 10; //计算 进多少位数,/10可求要进多少10。(10进1位)

}

if (temp1 10 temp1 0) //当进位小于10不必调用push函数

{

s1.push_back(temp1 + 48); //+48表示转换为ASCII字符

}

else

push(s1, temp1);

}

return s1;

}

//输出结果函数

void output(string a) //输出,因为是倒序存储所以要倒序输出

{

for (int i = a.size() - 1; i = 0; i--)

{

if (a[i] == '0' i == a.size() - 1) //输出去除开头的0

continue;

cout a[i];

}

cout endl;

}

//反向存储

string inversion(string a) //倒序存储

{

string st;

for (int i = a.size() - 1; i = 0; i--)

{

if (a[i] == '0' i == a.size() - 1) //输出去除开头的0

continue;

st.push_back(a[i]);

}

return st;

}

//计算总和函数

void sum(string a, string b)

{

a.assign(inversion(a));

b.assign(inversion(b));

a.assign(plus1(a, b));

}

int main()

{

string st1;

int n = 0;

cout "输入n的值:";

cin n;

for (int i = 1; i = n; i++)

{

sum(st1, factorial(i));

}

cout "1到" n "阶乘的和是:" endl;

output(st1);

}

从1的阶乘加到100的阶乘!急!急!急!急!急!急!急!

用直接递归求的:#includestdio.h

double fun(int x)

{

if(x==1) return 1;

else

return x*fun(x-1);

}

void main()

{

int x;

double s;

scanf("%d",x);

s=fun(x);

printf("%lf\n",s);

}

Python整数阶乘组合计算

#!/usr/bin/env?python3.6

import?re

from?math?import?factorial?as?fac

def?get_k(n,?a):

????nn?=?fac(n)

????for?k?in?range(1,?n):

????????ak?=?a**k

????????if?nn?%?ak?==?0?and?nn?%?(ak?*?k)?!=?0:

????????????return?k

def?main():

????inp?=?input('Enter?two?integers:?')

????n,?a?=?[int(i)?for?i?in?re.findall(r'\d+',?inp)[:2]]

????print(get_k(n,?a))

if?__name__?==?'__main__':

????main()

(责任编辑:IT教学网)

更多