c語言求一個數的約數
『壹』 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;
}
『貳』 如何用C語言求一個整數的所有約數之和
#include <stdio.h>
int main(int argc, char *argv[])
{
int i,a,sum;
while(scanf("%d",&a)!=EOF)
{
printf("%d 的約數有:",a);
sum=0;
for(i=1;i<=a;i++)
if(a%i==0)
sum+=i,printf("%d ,",i);
printf(" 約數和為 %d\n",sum);
}
return 0;
}
『叄』 c語言編程 怎麼求一個數(除去本身)的最大約數 例如 2011515458525
#include<stdio.h>
voidmain()
{
longlongm,t,i;
intf=0;
//printf("輸入要判斷的數:");
//scanf("%lld",&m);
//可以在此處改為自己輸入m的值
m=2011515458525;
for(i=2;i<=m/2;i++)
{
if(!(m%i))
{
t=m/i;
f=1;
break;
}
}
if(f==0)
printf("%lld是質數!",m);
else
{
printf("%lld的最大約數是%lld ",m,t);
printf("且%lld=%lld*%lld ",m,t,i);
}
}
『肆』 C語言有么高效求一個數的所有約數哦
比較好的辦法是先高效地求出質因子分解,再由這個分解來生成所有的約數。
至於怎麼高效地進行質因子分解,這個比較復雜,如果僅限於32位整數范圍並且要求不高的話可以考慮下面兩種方案
1.事先生成65536內的質數表,然後就很容易了。
2.比較偷懶的辦法,先把因子2過濾掉,然後遍歷奇數。
一樓寫的程序顯然屬於還沒入門,演算法笨不說,還有語法錯。
『伍』 C語言求最大約數
程序:
#include<stdio.h>
int main()
{
int n,t;
scanf("%d",&n);
for(t=n-1;t>99;t--)
{
if(n%t==0)
{
printf("%d\n",t);
break;
}
}
if(t==99)
printf("No found!\n");
return 0;
}
解釋:
你的程序可以運行,沒啥語法問題。如果求一個大於等於100的數的約數中的最大三位數,那不就是它本身嘛。比如133&133=0,最大約數就是自己,而且也是三位數。你的意思是不是說求這個數的除了它本身之外的約數中的最大三位數?我發的程序就是這樣寫的。可能找不到這樣的數。
『陸』 C語言求公約數
1、新建一個C語言源程序,這里使用Visual C++6.0的軟體:
『柒』 用c語言求2個數的公約數。
#include<stdio.h>
#include<stdlib.h>
int gcd(int m,int n)
{
int i,j,r;
i=m;
j=n;
r=m%n;
while(r!=0)
{
m=n;
n=r;
r=m%n;
}
return n;
}
int main()
{
int x,y;
scanf("%d%d",&x,&y);
printf("%d",gcd(x,y));
system("pause");
return 0;
}
『捌』 c語言高效求一個數的約數和
//#include"stdafx.h"//vc++6.0加上這一行.
#include"stdio.h"
intmain(void){
inta,b,i,x,y,f,n;
printf("Entera&b(int)... ");
scanf("%d%d",&a,&b);
for(n=a;n<=b;n++){
for(x=1,n&1?(i=3,f=2):(i=2,f=1);(a=i*i)<=n;i+=f)
if(!(n%i))
(x+=i)+=a!=n?n/i:0;
for(y=1,x&1?(i=3,f=2):(i=2,f=1);(a=i*i)<=x;i+=f)
if(!(x%i))
(y+=i)+=a!=x?x/i:0;
if(y==n&&y!=x)
printf("%d %d ",n,x);
}
return0;
}
『玖』 C語言編程: 輸入一個正整數求它的全部約數,並輸出。運行結果停留在屏幕上。
代碼: #include <stdio.h>
void main ()
{
int x,i;
printf("請輸入一個正整數:\n");
scanf("%d",&x);
printf("它的全部約數是:\n");
for(i=1;i<=x;i++)
{
if(x%i==0)
printf("%d\n",i);
}
} 圖: