A. 如何用計算機c語言編程:輸入兩個正整數,輸出它們的最小公約數和最大公約數
#include
int
min(int
a,int
b)
{
return
a>b?b:a;
}
void
main()
{
int
i;
int
m,n;
printf("輸入兩個正整數:");
//輸入
scanf("%d",&m);
scanf("%d",&n);
//求最小並輸出
for(i=2;i<=min(m,n);i++)
if((m%i==0)&&(n%i==0))
{
printf("最小公約數:%d\n",i);
break;
}
//求最大並輸出
for(i=min(m,n);i>=2;i--)
if((m%i==0)&&(n%i==0))
{
printf("最大公約數:%d\n",i);
break;
}
}
B. 用C語言編寫 從鍵盤輸入一個整數x,輸出它所有的約數。(即能被它整除。例如:6的約數為 1,2,3
#include <stdio.h>
int main()
{
int x,i;
scanf("%d",&x);
for(i=1;i<x;++i)
if(x%i==0)
printf("%d ",i);
return 0;
}
C. c語言輸出一個數的所有因數
從數學定義可以得知,一個數的因數范圍在1到該數本身。所以只需要從1到該數遍歷,逐個嘗試模除,可以整除的則為因數,將所有符合條件的數列印即可。
代碼如下:
#include<stdio.h>
intmain()
{
intn,i;
scanf("%d",&n);//輸入要輸出因數的值。
for(i=1;i<=n;i++)
{
if(n%i==0)printf("%d,",i);//輸出因數。
}
return0;
}
D. 如何用C語言求一個整數的所有約數之和
思路:
用a除從1到a/2
判斷結果,是約數賦值給數組a[0]
...
...
再求數組a[n]的和
E. C語言有么高效求一個數的所有約數哦
用素數表,求很大的數的約數效率提高很多
#define MAX 10000
int a[MAX]={2,3,5,7,11,13,...};/*前一萬個素數*/
F. C語言:輸入一個整數,怎麼輸出這個數的所有約數
scanf("%d",&x);
for(int i=1;i<=x;i++)
if(x%i==0)printf("%d ",i);
G. C語言 快速求一個自然數的約數的個數
對於這個問題我們只需要暴力從2到根號n這個閉區間的所有整數就行了,如果能整除計數就加2,不過如果這個整數的平方就是輸入的n則計數只能加1。最後不要忘記1和其自身。如果根號n不是一個整數,那麼我們可以向下取整。演算法的整體復雜度是根號n,這個演算法的時間消耗與根號n成正比,不過可以確定的是n在32位的整型(或者無符號的整型)數據范圍內時間消耗還是比較樂觀的。參考代碼(C語言實現):
#include
<stdio.h>
#include
<math.h>
int
main(void)
{
int
i;
int
n;
int
m;
int
num;
scanf("%d",
&n);
num
=
0;
m
=
sqrt(n);
for
(i=2;
i<=m;
++i)
{
if
(n
%
i
==
0)
{
num
+=
2;
if
(i
*
i
==
n)
{
--num;
}
}
}
/*自然數1應該只有一個因子才對*/
if
(n
!=
1)
{
num
+=
2;
}
else
{
++num;
}
printf("%d\n",
num);
return
0;
}
H. C語言編程: 輸入一個正整數求它的全部約數,並輸出。運行結果停留在屏幕上。
#include<stdio.h>void main()
{
int n,i;
printf("輸入一個正整數:");
scanf("%d",&n);
printf("約數:\n");
for(i=1;i<=n;i++)
if(n%i==0) printf("%d\n",i);}