❶ 用当循环结构设计算法,求正整数m,n的最大公约数(辗转相除法)
int gcd(int m,int n)
{while(n){int p=m%n;gcd(n,p);}return m;}
❷ 使用循环结构实现计算N!的算法是
实现计算n!的算法是
a递归
b迭代
c排序
d查找
求阶乘
用递归
function
solution
=
factorial(n)
if
n
==
1
solution
=
1;
else
soluion
=
n*factorial(n-1);
end
意思就是
如果
是1
结果就等于1
如果不是
那就等于它本身乘以factorial(阶乘的意思)(n-1)
如果是2
那就等于
2*f(1)
=
2
如果是3
=
3*f(2)
=
3*2*f(1)
=
6
所以
选a
ps:如果需要高精度的阶乘算法
m我
发给你···
❸ 编程计算1到n的素数个数,循环结构
*问题分析与算法设计
素数就是仅能衩1和它自身整除的整数。判定一个整数n是否为素数就是要判定整数n能否被除1和它自身之外的任意整数整除,若都不能整除,则n为素数。
程序设计时i可以从2开始,到该整数n的1/2为止,用i依次去除需要判定的整数,只要存在可以整除该数的情况,即可确定要判断的整数不是素数,否则是素数。
*程序与程序注释
#include<stdio.h>
void main()
{
int n1,nm,i,j,flag,count=0;
do{
printf("Input START and END=?");
scanf("%d%d",&n1,&nm); /*输入求素数的范围*/
}while(!(n1>0&&n1<nm)); /*输入正确的范围*/
printf("...........PRIME TABLE(%d--%d)............\\n",n1,nm);
if(n1==1||n1==2) /*处理素数2*/
{
printf("%4d",2);
n1=3;count++;
}
for(i=n1;i<=nm;i++) /*判定指定范围内的整数是否为素数*/
{
if(!(i%2))continue;
for(flag=1,j=3;flag&&j<i/2;j+=2)
/*判定能否被从3到整数的一半中的某一数所整除*/
if(!(i%j))flag=0; /*若能整除则不是素数*/
if(flag) printf(++count%15?"%4d":"%4d\\n",i);
}
}
❹ 编程:请分别用do while、while两种循环结构编程计算: 1!+2!+3!+...+n! , n的值由键盘输入。
do while两种循环结构:
#include<stdio.h>
int fun(int a)
{
int i=1,sum=1;
do
{
sum*=i;
i++;
}
while(i<=a)
return sum;
}
main()
{
int n,i=1,sum=0;
printf("请输入n的值:");
scanf("%d",&n);
do
{
sum+=fun(i);
i++;
}while(i<=n)
printf("结果是:%d",sum);
}
while循环结构:
#include<stdio.h>
int fun(int a)
{
int i=1,sum=1;
while(i<=a)
{
sum*=i;
i++;
}
return sum;
}
main()
{
int n,i=1,sum=0;
printf("请输入n的值:");
scanf("%d",&n);
while(i<=n)
{
sum+=fun(i);
i++;
}
printf("结果是:%d",sum);
}
(4)使用循环结构计算n的算法扩展阅读:
do...while 和while循环有相似之处,但使用方法完全不同,一个是直到型循环,另一个是当型循环。区别在于表达式的值是在每次循环结束时检查而不是开始时。
和正规的 while 循环主要的区别是 do-while 的循环语句保证会执行一次(表达式的真值在每次循环结束后检查),然而在正规的 while 循环中就不一定了(表达式真值在循环开始时检查,如果一开始就为FALSE则整个循环立即终止)。
❺ 10!=3628800采用while循环结构实现计算N
循环结构实现就用迭代,简单来讲递归就是自己调用自己,循环结构一般分为while和for。
以下是递归:
//用迭代的方法计算n的阶乘 long factorial(int n) { int result=1; while(n>1) { result*=n; n-=1; } return result; }
❻ 用循环结构写这样一个程序:输入两个数m,n,计算他们的最大公约数和最小公倍数
两个非零整数的最大公约数就是它们绝对值的最大公约数,最小公倍数是它们的积除以最大公约数#include <stdio.h>
#include <math.h>
int f(int a,int b)
{
int r;r = a % b;
while(r != 0)
{a = b;<br/>b = r;<br/>r = a % b;<br/>}
return b;
}
int main()
{
int a, b, r1;
scanf("%d %d", &a, &b);a=abs(a);b=abs(b);
r1 = f(a, b);printf("%d\n",r1); //输出最大公约数printf("%d\n",a*b/r1); //输出最小公倍数return 0;
}
❼ 从键盘输入正整数n,求n!,使用三种循环结构实现此功能。
摘要 int Func(int n)
❽ 编写程序,使用循环结构计算2的n次幂值(n由键盘输入).
<script type="text/javascript">
var n = parseInt(prompt('输入n'));
var num = 1;
for(var i = 0; i < n; i ++){
num *= 2; //num = num * 2;
}
document.write("2的" + n + "次幂是" + " " + num);
</script>
(8)使用循环结构计算n的算法扩展阅读:
C语言中提供四种循环,即goto循环、while循环、do…while循环和for循环。
四种循环可以用来处理同一问题,一般情况下它们可以互相代替换,但一般不提倡用goto循环,因为强制改变程序的顺序经常会给程序的运行带来不可预料的错误,在学习中主要学习while、do…while、for三种循环。
常用的三种循环结构学习的重点在于弄清它们相同与不同之处,以便在不同场合下使用。这就要清楚三种循环的格式和执行顺序,将每种循环的流程图理解透彻后就会明白如何替换使用,如把while循环的例题,用for语句重新编写一个程序,这样能更好地理解它们的作用。
特别要注意在循环体内应包含趋于结束的语句(即循环变量值的改变),否则就可能成了一个死循环,这是初学者的一个常见错误。
❾ 求水仙花数的算法是 使用循环结构实现计算N!的算法是 A递归 B迭代 C排序 D查找
实现计算N!的算法是 A递归 B迭代 C排序 D查找
求阶乘 用递归
function solution = factorial(n)
if n == 1
solution = 1;
else
soluion = n*factorial(n-1);
end
意思就是 如果 是1 结果就等于1 如果不是 那就等于它本身乘以factorial(阶乘的意思)(n-1) 如果是2 那就等于 2*f(1) = 2 如果是3 = 3*f(2) = 3*2*f(1) = 6
所以 选A
PS:如果需要高精度的阶乘算法 m我 发给你···
❿ 请使用伪代码编写算法: 要求分别用循环结构和递归结构求解n!。 n!= 1 当n=0 n!=n*(n--1)! 当n>0
func(n)
{
if(n == 0)
func(n) = 1;
func(n) = n*func(n-1);
}
伪代码的话,自己组织一下语言、思路和简单的代码就可以了