當前位置:首頁 » 編程語言 » c語言中求真因子函數
擴展閱讀
webinf下怎麼引入js 2023-08-31 21:54:13
堡壘機怎麼打開web 2023-08-31 21:54:11

c語言中求真因子函數

發布時間: 2022-04-21 16:18:06

⑴ 用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語言,求函數因子

一開始定義int m=0沒必要,就是m就可以了。
循環中要定義m=0,這樣,對於每一個i,m最終都得到i因子的和,然後將m與i比較,如果相等,則i是完數,輸出完數i。對於下一個i,m=0的作用是將m及時恢復0,這樣才能得到i因子的和,否則就是對於各個i,m的值一直累加了。

⑶ 求因子的函數(C語言)

是啊,在運行break之前,結果已經存放到m中了。
這個程序,應該加break比較好,雖然運算結果是一樣的,但是有了break,運行效率會提高。
當n=100時,沒有break,要循環98次,而有了break,第一次循環就算出結果,結束了。

⑷ 用C語言編一函數,找出任一整數的全部因子。【程序盡量完整】

#include
"stdio.h"
int
main()
{
int
x,i;
scanf("%d",&x);//輸入一個整數
for(i=1;i<=x;++i)
{
if(x%i==0)
printf("%d\n",i);//輸出因子
}
return
0;
}
這樣就OK了~~不明白的話就問我

⑸ 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語言:求出一個整數的所有因子,一行代碼沒看懂,求解釋

這應該是求一個數所有素數因子的一個程序,而且素數因子可以重復,實際上輸出結果的結果相乘就是這個數。
這是用遞歸程序實現的。
shunum(int a)這個函數在輸出a的第一個最小的因子後,繼續調用shunum函數計算 這個數除以剛才輸出的第一個最小因子的結果 的因子,然後跳出循環。比如輸入60這個數,程序執行的過程是:
shunum(60) ---- 輸出 2 然後調用shunum(60/2)=shunum(30);
shunum(30) --- 輸出 2 然後調用shunum(30/2)=shunum(15);
shunum(15) --- 輸出 3 然後調用shunum(15/3)=shunum(5);
shunum(5) --- 輸出 5 然後調用shunum(5/5) = shunum(1);
shunum(1) --- for循環的條件不符合,直接返回;
執行shunum(5)的break,跳出循環,shunum(5)結束;
執行shunum(15)的break,跳出循環,shunum(15)結束;
執行shunum(30)的break,跳出循環,shunum(30)結束;
執行shunum(60)的break,跳出循環,shunum(60)結束;

可以看出,輸出結果是 2 2 3 5,而2*2*3*5=60。

⑺ C語言,輸入任意正整數,求出其所有因子顯示出來

//
實現輸入任意整數,輸出所有因子
#include
#include
//數學函數頭文件
int
main()
{
int
m,
i;
printf("請你輸入一個正整數:\n");
scanf_s("%d",
&m);
printf("%d
的因子有:\n",
m);
printf("1,
");
for
(i
=
2;
i
<=
m/2;
i++)
{
if
(m
%
i
==
0)
{
printf("%d,
",
i);
}
}
printf("%d!",
m);
getchar();
getchar();
return
0;
}

⑻ 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;

}

(8)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語言求一個數的所有因子

#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;

}

(10)c語言中求真因子函數擴展閱讀:

有一種說法是「因子不限正負」,不過通常情況下只取正因子。

1, -1, n 和 -n 這些數叫做 n 的明顯因子

表示方法:可以用因子|倍數或倍數≡0 (mod 因子) 來表達(參見同餘),但用後者時因子一定要是正因子。因子∣倍數式中的垂直線是整除符號。它的統一碼值是 U+2223。

例如 42=6x7,因此 7 是 42 的因子,寫作 7∣42,亦是42≡0(mod 7)。