每日一題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;
}
相關文章
- 每日一題每日一題
- 王者榮耀2月15日每日一題的答案是什麼 微信公眾號每日一題每日一題
- JAVA每日一旅2Java
- 雲端計算每日一題每日一題
- CSDN專案:每日一題每日一題
- leetcode每日一題LeetCode每日一題
- 每日一題 -- 11-1每日一題
- 每日一題(94) - 堆排序每日一題排序
- 每日一題: 有效括號每日一題
- [每日一題] 第十題:替換空格每日一題
- Leetcode每日一題(1)LeetCode每日一題
- [每日一題] 79. Word Search每日一題
- 【每日一練】Oracle OCP認證考試題庫解析052-2Oracle
- 4.4上海交大PMP試題每日一題每日一題
- 每日一題@49矩陣置零每日一題矩陣
- LeetCode每日一題:sort colorsLeetCode每日一題
- [每日一題] 第一題:判定是否互為字元重排每日一題字元
- [每日一題] 第二題:反轉連結串列每日一題
- 12.5上海交大PMP試題每日一題每日一題
- 12.7上海交大PMP試題每日一題每日一題
- [每日一題] 第十七題:青蛙跳臺階問題每日一題
- LeetCode 每日一題「判定字元是否唯一」LeetCode每日一題字元
- 每日一題:五 特別的數字每日一題
- 每日一題:三 墨西哥人浪每日一題
- 雲端計算每日一題(NO.0002)每日一題
- 雲端計算每日一題(NO.0009)每日一題
- 每日一題 2020.11.5每日一題
- [每日一題]140. Word Break II每日一題
- 每日"兩"題 題解
- 每日任務2
- [每日一題] 第六題:不用加減乘除做加法每日一題
- [每日一題] 第八題:二叉樹的深度每日一題二叉樹
- [每日一題] 第二十題:最小的k個數每日一題
- [每日一題] 第三題:二叉樹的深度每日一題二叉樹
- 字典序的下一個排序--力扣每日一題排序力扣每日一題
- [每日一題] 判定是否互為字元重排每日一題字元
- LeetCode每日一題:Nim遊戲(No.292)LeetCode每日一題遊戲
- LeetCode每日一題: 找不同(No.389)LeetCode每日一題