1加到100的阶乘Python(python1到10的阶乘求和用while)
使用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()