一開始定義int m=0沒必要,就是m就可以了。
創(chuàng)新互聯(lián)建站成立于2013年,是專業(yè)互聯(lián)網(wǎng)技術(shù)服務(wù)公司,擁有項(xiàng)目成都網(wǎng)站設(shè)計(jì)、成都網(wǎng)站制作網(wǎng)站策劃,項(xiàng)目實(shí)施與項(xiàng)目整合能力。我們以讓每一個(gè)夢想脫穎而出為使命,1280元華坪做網(wǎng)站,已為上家服務(wù),為華坪各地企業(yè)和個(gè)人服務(wù),聯(lián)系電話:028-86922220
循環(huán)中要定義m=0,這樣,對于每一個(gè)i,m最終都得到i因子的和,然后將m與i比較,如果相等,則i是完數(shù),輸出完數(shù)i。對于下一個(gè)i,m=0的作用是將m及時(shí)恢復(fù)0,這樣才能得到i因子的和,否則就是對于各個(gè)i,m的值一直累加了。
#include
"stdio.h"
int
main()
{
int
x,i;
scanf("%d",x);//輸入一個(gè)整數(shù)
for(i=1;i=x;++i)
{
if(x%i==0)
printf("%d\n",i);//輸出因子
}
return
0;
}
這樣就OK了~~不明白的話就問我
1.對1~本身的各個(gè)數(shù)取余,為零的即為其因子。
#include?stdio.h
void?factor(int?n)
{
printf("%d?factor?has:?",?n);
for?(int?i?=?1;?i?=?n;?i?++)
{
if?(n?%?i?==?0)
printf("%d?",?i);
}
printf("\n");
}
int?main()
{
factor(27);
factor(100);
return?0;
}
#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\n",i,k);
}else{
fac[c1++]=i;
s+=i;
}
}
i++;
if(i=k) break;//這個(gè)時(shí)候k已經(jīng)開始等于自身的根號(hào),或者將要出現(xiàn)和之前k對稱的i,引起自身重復(fù)故退出
}
for(c2++;c2=N-1;c2++){
fac[c1++]=fac[c2];
printf("%s %d\n","**",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;icount;i++){
printf("%5d",factors[i]);
}
printf("\n\n");
printf("sum=%5ld? count=%5d\n",sum,count);?
return 0;
}
擴(kuò)展資料:
有一種說法是“因子不限正負(fù)”,不過通常情況下只取正因子。
1, -1, n 和 -n 這些數(shù)叫做 n 的明顯因子
表示方法:可以用因子|倍數(shù)或倍數(shù)≡0 (mod 因子) 來表達(dá)(參見同余),但用后者時(shí)因子一定要是正因子。因子∣倍數(shù)?式中的垂直線是整除符號(hào)。它的統(tǒng)一碼值是 U+2223。
例如 42=6x7,因此 7 是 42 的因子,寫作 7∣42,亦是42≡0(mod 7)。