❶ 用當循環結構設計演算法,求正整數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);
}
偽代碼的話,自己組織一下語言、思路和簡單的代碼就可以了