c語言求一個數的因子個數
① 怎麼用c語言來輸出一個數的因子個數
設所需計算的數是N,首先N/2,若N為奇數,則(N-1)/2,然後對N/2或(N-1)/2求余,用for循環
a=N/2(若N為奇數就(N-1)/2)
for(i=1;i<=a;i++){
if(a%i==0)
count++;
}
最後count乘以2就行了
② c語言求一個數的因子
#include <stdio.h>
# include <stdlib.h>
#define N 100
long factor(int m,int fac[],int *cp){
int c1,c2,i,k;
long s;
fac[0]=1;
for(c1=s=1,c2=N-1,i=2;;){
k=m/i;
if(m%i==0){
if(i!=k){
fac[c1++]=i;
fac[c2--]=k;
s+=i+k;
printf("i=%d k=%d ",i,k);
}else{
fac[c1++]=i;
s+=i;
}
}
i++;
if(i>=k) break;//這個時候k已經開始等於自身的根號,或者將要出現和之前k對稱的i,引起自身重復故退出
}
for(c2++;c2<=N-1;c2++){
fac[c1++]=fac[c2];
printf("%s %d ","**",fac[c2]);
}
*cp=c1;
return s;
}
int main(int argc, char const *argv[])
{
/* code */
int factors[N],i,count;
long sum;
sum = factor(atoi(argv[1]),factors,&count);
for(i=0;i<count;i++){
printf("%5d",factors[i]);
}
printf(" ");
printf("sum=%5ld count=%5d ",sum,count);
return 0;
}
(2)c語言求一個數的因子個數擴展閱讀:
有一種說法是「因子不限正負」,不過通常情況下只取正因子。
1, -1, n 和 -n 這些數叫做 n 的明顯因子
表示方法:可以用因子|倍數或倍數≡0 (mod 因子) 來表達(參見同餘),但用後者時因子一定要是正因子。因子∣倍數式中的垂直線是整除符號。它的統一碼值是 U+2223。
例如 42=6x7,因此 7 是 42 的因子,寫作 7∣42,亦是42≡0(mod 7)。
③ C語言:編寫一個函數,求出一個給定數字的所有因子。
1.對1~本身的各個數取余,為零的即為其因子。
#include<stdio.h>
voidfactor(intn)
{
printf("%dfactorhas:",n);
for(inti=1;i<=n;i++)
{
if(n%i==0)
printf("%d",i);
}
printf(" ");
}
intmain()
{
factor(27);
factor(100);
return0;
}
④ c語言問題 編寫一個函數,求出一個給定的數字的所有因子,如72=2*2*2*3*3.
#include<stdio.h>
void main()
{
int x,y,i=2,j=0,m;
printf("輸入數字:");
scanf("%d",&x);
m=x;
int a[15]={0};
//設定一個范圍足夠的數組存放因子
while(i<=x)
{
if((x%i)==0) { x=x/i ;a[j]=i; j++; i=2;}
else i++;
//由於一個數的因子會小於或等於本身,所以可以
//以此設定跳出條件,用遍歷的思想去從2開始逐個尋找因子
//如果那個數是因子之一則可以被整除if((x%i)==0)
//以此作為判斷條件,而一個數的因子可能會重復
//所以每找到一個就要有重頭開始再判斷一邊
//i=2;就是作為復位的,其實這個程序和演算法很簡單
//你自己多看兩遍就明白了
//如果還有不懂得就直接上我的空間找我好了
}
printf("y=");
if(j==0) printf("%d\n",m);
//這是特殊情況質數
else
{
for(i=0;i<j-1;i++) if(a[i]!=0) printf("%d*",a[i]);
printf("%d\n",a[i]);
}
}
⑤ 用C語言編寫一個函數factors,求出一個正整數的所有因子。
#include
#include
//數學函數頭文件
main()
{
int
m,i,k=0;
printf("請你輸入一個正整數:\n");
scanf("%d",&m);
printf("%d
的因子有:\n",m);
for(i=1;i<=m;i++)
{
if(m%i==0)
{
printf("%6d",i);
k++;
if(k%5==0)printf("\n");
//每五個數換一次行
}
}
getchar();
getchar();
}
你上機運行一下吧,結果是對的,有不明白的地方可以再找我……
⑥ 用c語言求一個數的所有因子
C語言程序如下:
#include <stdio.h>
# include <stdlib.h>
#define N 100
long factor(int m,int fac[],int *cp){
int c1,c2,i,k;
long s;
fac[0]=1;
for(c1=s=1,c2=N-1,i=2;;){
k=m/i;
if(m%i==0){
if(i!=k){
fac[c1++]=i;
fac[c2--]=k;
s+=i+k;
printf("i=%d k=%d ",i,k);
}else{
fac[c1++]=i;
s+=i;
}
}
i++;
if(i>=k) break;//這個時候k已經開始等於自身的根號,或者將要出現和之前k對稱的i,引起自身重復故退出
}
for(c2++;c2<=N-1;c2++){
fac[c1++]=fac[c2];
printf("%s %d ","**",fac[c2]);
}
*cp=c1;
return s;
}
int main(int argc, char const *argv[])
{
/* code */
int factors[N],i,count;
long sum;
sum = factor(atoi(argv[1]),factors,&count);
for(i=0;i<count;i++){
printf("%5d",factors[i]);
}
printf(" ");
printf("sum=%5ld count=%5d ",sum,count);
return 0;
}
(6)c語言求一個數的因子個數擴展閱讀:
數學概念
假如整數n除以m,結果是無余數的整數,那麼我們稱m就是n的因子。 需要注意的是,唯有被除數,除數,商皆為整數,余數為零時,此關系才成立。反過來說,稱n為m的倍數。
要留意的是:有一種說法是「因子不限正負」,不過通常情況下只取正因子。
1, -1, n 和 -n 這些數叫做 n 的明顯因子
⑦ C語言題(因子個數)
你這是求因數個數,不是因子個數。
第二行 51這個數 1 3 17 51.四個因數,輸出卻是6.
題目到底什麼意思
⑧ C語言指針輸入一個數算他的因子有幾個
#include<stdio.h>
int main()
{
int *p,sum=0;//定義一個指針變數後,p就代表地址(指針),*p就是變數值;
scanf("%d",&*p);
for(int i=1;i<*p;i++)
if(*p%i==0)
{
sum++;
printf("%d ",i);
}
printf(" %d",sum);
return 0;
}//【指針符(*)】+【指針(p)】==【變數值】;