一開始定義int m=0沒必要,就是m就可以了。
成都創(chuàng)新互聯(lián)于2013年創(chuàng)立,是專業(yè)互聯(lián)網(wǎng)技術(shù)服務(wù)公司,擁有項(xiàng)目成都網(wǎng)站建設(shè)、網(wǎng)站設(shè)計(jì)網(wǎng)站策劃,項(xiàng)目實(shí)施與項(xiàng)目整合能力。我們以讓每一個夢想脫穎而出為使命,1280元光澤做網(wǎng)站,已為上家服務(wù),為光澤各地企業(yè)和個人服務(wù),聯(lián)系電話:13518219792
循環(huán)中要定義m=0,這樣,對于每一個i,m最終都得到i因子的和,然后將m與i比較,如果相等,則i是完數(shù),輸出完數(shù)i。對于下一個i,m=0的作用是將m及時恢復(fù)0,這樣才能得到i因子的和,否則就是對于各個i,m的值一直累加了。
#include
#include
//數(shù)學(xué)函數(shù)頭文件
main()
{
int
m,i,k=0;
printf("請你輸入一個正整數(shù):\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");
//每五個數(shù)換一次行
}
}
getchar();
getchar();
}
你上機(jī)運(yùn)行一下吧,結(jié)果是對的,有不明白的地方可以再找我……
1.對1~本身的各個數(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;
}
這是我編寫的 你編寫的 要注意 每次進(jìn)行外循環(huán)都要把 s初始化為 0 否則就是用上一次的值
#include stdio.h
int main()
{
int i,j,n,sum;
printf("請輸入一個數(shù):");
scanf("%d",n);
for(i=1;i=n;i++)
{
sum=0;
for(j=1;ji;j++)
if(i%j==0)
sum+=j;
if(sum==i)
{
printf("完數(shù)為:%d\t它的約數(shù)是:",i);
for(j=1;ji;j++)
if(i%j==0)
printf("%4d",j);
printf("\n");
}
}
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;//這個時候k已經(jīng)開始等于自身的根號,或者將要出現(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ù)?式中的垂直線是整除符號。它的統(tǒng)一碼值是 U+2223。
例如 42=6x7,因此 7 是 42 的因子,寫作 7∣42,亦是42≡0(mod 7)。