每日一題2
每日一題2
尋找1000內的完數
for迴圈中的變數與佛如迴圈外的變數再次搞混 導致輸出錯誤
完數:一個數剛好等於它所有因子之和。
基本思路很簡單 :for迴圈找到因子並存放陣列,且求總和;再判斷num與sum關係即可;
但此時應注意num和i的初始值且i與num大小關係,否則將無法進入for迴圈。i=2;num=1;
且a[n]為因子初始化為1;
以下兩個案例是sum初始化在for內和for外的區別,後者會導致程式出錯
因為每一次內層迴圈結束都應初始化因子 故sum和a[0]都應放入內層for迴圈裡
錯誤案例
#include<stdio.h>
int main(){
int a[256];
int i=0;
int k=0;
int num;
int sum=1;
a[0]=1;
for(num=2;num<1000;num++){
for(i=2;i<=(num/2);i++){
if(num%i==0){
a[++k]=i;
sum+=i;
}
}
if(num==sum){
printf("%d\n",num);
}
}
return 0;
}
正確案例
#include<stdio.h>
int main(){
int a[256];
int i=0;
int k=0;
int num;
int sum;
for(num=2;num<1000;num++){
sum=a[0]=1;
k=0;
int n=0;
for(i=2;i<=(num/2);i++){
if(num%i==0){
a[++k]=i;
sum+=i;
}
}
if(num==sum){
printf("%d=%d",num,a[0]);
for(n=1;n<=k;n++){
printf("+%d",a[n]);
}
printf("\n");
}
}
return 0;
}
相關文章
- 每日一題每日一題
- leetcode每日一題LeetCode每日一題
- 每日一題 2020.11.5每日一題
- 【每日一題】20241205每日一題
- 每日一題1每日一題
- 【每日一題】20241203每日一題
- 【每日一題】20241208每日一題
- 王者榮耀2月15日每日一題的答案是什麼 微信公眾號每日一題每日一題
- JAVA每日一題20201109Java每日一題
- Leetcode每日一題(1)LeetCode每日一題
- sicp每日一題[2.79]每日一題
- sicp每日一題[2.47]每日一題
- sicp每日一題[2.49]每日一題
- sicp每日一題[2.56]每日一題
- sicp每日一題[2.30]每日一題
- sicp每日一題[2.29]每日一題
- sicp每日一題[2.33]每日一題
- sicp每日一題[2.78]每日一題
- sicp每日一題[2.82]每日一題
- sicp每日一題[2.83]每日一題
- sicp每日一題[2.59]每日一題
- sicp每日一題[2.60]每日一題
- sicp每日一題[1.44]每日一題
- sicp每日一題[2.71]每日一題
- sicp每日一題[2.19]每日一題
- sicp每日一題[2.6]每日一題
- sicp每日一題[1.45]每日一題
- sicp每日一題[1.46]每日一題
- sicp每日一題[2.62]每日一題
- sicp每日一題[2.58]每日一題
- sicp每日一題[2.10]每日一題
- sicp每日一題[2.3]每日一題
- sicp每日一題[2.1]每日一題
- sicp每日一題[2.2]每日一題
- sicp每日一題[2.7]每日一題
- sicp每日一題[2.8]每日一題
- sicp每日一題[2.61]每日一題
- sicp每日一題[2.66]每日一題