1. 程式人生 > >求1000以內的完數(一個數恰好等於她的因子之和 eg. 6=1+2+3, 6是完數)

求1000以內的完數(一個數恰好等於她的因子之和 eg. 6=1+2+3, 6是完數)

1.
#define M 1000             /*定義尋找範圍*/
#include <stdio.h>
int main()
 {
  int k1,k2,k3,k4,k5,k6,k7,k8,k9,k10;
  int i,a,n,s;
  for (a=2;a<=M;a++)      /* a是2-1000之間的整數,檢查它是否完數 */
   {n=0;                  /* n用來累計a的因子的個數 */
    s=a;                  /* s用來存放尚未求出的因子之和,開始時等於a */
     for (i=1;i<a;i++)    /* 檢查i是否a的因子 */
if (a%i==0) /* 如果i是a的因子 */ {n++; /* n加1,表示新找到一個因子 */ s=s-i; /* s減去已找到的因子,s的新值是尚未求出的因子之和 */ switch(n) /* 將找到的因子賦給k1...k9,或k10 */ {case 1: k1=i; break; /* 找出的笫1個因子賦給k1 */ case 2: k2=i; break; /* 找出的笫2個因子賦給k2 */
case 3: k3=i; break; /* 找出的笫3個因子賦給k3 */ case 4: k4=i; break; /* 找出的笫4個因子賦給k4 */ case 5: k5=i; break; /* 找出的笫5個因子賦給k5 */ case 6: k6=i; break; /* 找出的笫6個因子賦給k6 */ case 7: k7=i; break; /* 找出的笫7個因子賦給k7 */ case
8: k8=i; break; /* 找出的笫8個因子賦給k8 */ case 9: k9=i; break; /*找出的笫9個因子賦給k9 */ case 10: k10=i; break; /* 找出的笫10個因子賦給k10 */ } } if (s==0) { printf("%d ,Its factors are ",a); if (n>1) printf("%d,%d",k1,k2); /* n>1表示a至少有2個因子 */ if (n>2) printf(",%d",k3); /* n>2表示至少有3個因子,故應再輸出一個因子 */ if (n>3) printf(",%d",k4); /* n>3表示至少有4個因子,故應再輸出一個因子 */ if (n>4) printf(",%d",k5); /* 以下類似 */ if (n>5) printf(",%d",k6); if (n>6) printf(",%d",k7); if (n>7) printf(",%d",k8); if (n>8) printf(",%d",k9); if (n>9) printf(",%d",k10); printf("\n"); } } return 0; } //感覺這個程式碼。。。好麻煩。。。 2. #include<cstdio> #include<algorithm> #include<iostream> #include<cmath> #include<iomanip> #include<cstring> using namespace std; int main() { int n,s; for(n=1; n<1000; n++){ s=0; for(int i=1; i<n; i++){ if(n%i==0) s+=i; } if(s==n) { printf("%d its factors are ", n); for(int i=1; i<n; i++){ if(n%i==0) printf("%d ",i); } printf("\n"); } } return 0; }

相關推薦

1000以內個數恰好等於因子之和 eg. 6=1+2+3, 6

1. #define M 1000 /*定義尋找範圍*/ #include <stdio.h> int main() { int k1,k2,k3,k4,k5,

題目:個數如果恰好等於它的因子之和,這個數就稱為""。例如6=1+2+3.程式設計找出1000以內的所有

兩個易錯點:1.sum應該在每次內迴圈結束之後進行初始化。2.對因子之和與數本身的判斷應該在內迴圈結束後。  public class Test9 { public static void main(String[] args) { int sum,i,j; for(i

5.題目: 個數如果恰好等於它的因子之和,這個數被成為””,例如:6=1+2+3.請程式設計找出1000以內

#include <stdio.h> int main() { int i; int j; int sum=0; int temp; for(i = 1;i <= 1000;i++) { temp = i; for(j = 1; j <=

ACMNO.11 個數如果恰好等於它的因子之和,這個數就稱為""。 例如,6因子123,而6=1+2+3,因此6是""。 程式設計序找出N之內的所有,並按下面格式輸出其因子

寫在前面,心得感悟~ 程式碼越來越有難度! 這個ACM題,我除錯了 將近50次~ 一個小時! 真的是,年紀輕輕的搞什麼ACM呀! 關於題的解決思路放在下面再寫吧! 題目描述 一個數如果恰好等於它的因子之和,這個數就稱為"完數"。 例如,6的因子為1、2、3,而6=1+2+

C++課後練習——程式設計1000之內的全數。說明:全數就是:除了它本身以外所有因子之和等於其本身,例如6=1+2+36就是一個全數

程式設計求1000之內的完全數。說明:完全數就是:除了它本身以外所有因子之和等於其本身,例如6=1+2+3,6就是一個完全數。 #include "iostream" using namespace

數字瘦身,最後輸出位數,例如:75 7+5=12 1+2=3 最終答案 3

基本 adl using ram static mil ogr string pub 數字瘦身,最後輸出一位數,例如:75 7+5=12 1+2=3 最終答案 3 using System; public class Solution { private

c語言 對10個數組元素依次賦值為0 1 2 3 4 5 6 7 8 9,要求按逆序輸出

                對10個數組元素依次賦值為0,1,2,3,4,5,6,7,8,9,要求按逆序輸出。 解:程式:

實現類似add(1)(2)(3)的函

例如 解決問題 rip addm lock number 暫時 ram 最終 要求實現類似add(1)(2)(3)調用方式的方法,例如add為加法函數,則調用add(1)(2)輸出3,調用add(1)(5)(3)輸出9。 ? 函數的調用方式是多次調用同一個函數,將

給定個數組,陣列中有正有負,出連續陣列中和值最大的陣列長度大於等於1

刷牛牛客遇到的題,想給出完整而又簡潔的function(python解答,但是關鍵是思想,語言不是問題啦)1.給定一個數組,陣列中有正有負,求出連續(全部都是正的時候,所有值累加就是最大值)(全部為負的時候,max(array)就是我們想要的)# -*- coding:utf

JAVA 1000以內

一個數如果恰好等於它的因子之和,這個數就成為完數。編寫應用程式求1000之內的所有完數。 public class Hello { public static void main(String[] args){ int i,j; int sum

1000以內

#include <stdio.h>  int main()  {     int n=1000;      int r,j,i;      for(i=1;i<=n; i++)     {r = 0;       //初始化要輸出的結果for(j=1;j

n以內的質數質數的定義:在大於1的自然數中,除了1和它本身意外,無法被其他自然數整除的

思路: 1.(質數篩選定理)n不能夠被不大於根號n的任何質數整除,則n是一個質數2.除了2的偶數都不是質數程式碼如下: /** * 求n內的質數 * @param int $n * @return array */ function get_prime($n) { $prime =

個數的所有質因子C++

功能:輸入一個正整數,按照從小到大的順序輸出它的所有質數的因子(如180的質數因子為2 2 3 3 5 ) 最後一個數後面也要有空格剛開始沒有思路,後來查了下質因子的求法,可通過以下方法求出:#include<iostream>#include<st

1000以內所有素數/合數之和,java演算法23行

這基本上是最簡單的方法了,應該沒有之一了,嘿嘿~ 根據素數的定義:只能被1和他本身整除。1不是素數。 寫出下面程式碼,執行正確。 把註釋去掉可以求出1000以內所有素數的和。 class FindAll { //static int sum=0; static voi

js組合並個數組新增到另個數組裡面方法

js定義兩個陣列。var arrA=[1,2,3];var arrB=[4,5,6];要實現[1,2,3,4,5,6],如果直接arrA.push(arrB); 則arrB只會作為了arrA的一個元素。執行如圖:要合併或連線,則需要使用concat() 方法。concat(Array) 方法concat()

程式設計找出1000以內,並按下面格式輸出因子6 its factors are 1 2 3

void is_Perfectnumber(int number) //判斷完數並輸出 { int i = 0; int j = 0; int sum = 0; int

C++構造函

復習 打開 con div 空間 成對 全局 ptr 分配 本篇是介紹C++的構造函數的第一篇(共二篇),屬於讀書筆記,對C++進行一個系統的復習。 構造函數的概念和作用 全局變量未初始化時為0,局部變量未初始化時的值卻是無法預測的。這是因為,全局變量的初始化是再程序裝載時

讓我們把KBEngine玩壞吧!如何定制我們自己的C++函

data ase erro glob alt ins sin 程序 all 為什麽不更新kbe warring的代碼解讀了,因為在我看來那個demo講完了實體就沒東西可講了,如果專心的看官方文檔和PPT的話demo的代碼後面沒任何難點了已經,單純的復制黏貼代碼實在太過無聊。

Day 22 生成器yield表達式及內置函丟丟

style 取值 面向過程 內置 read == for send __next__ 本日知識點: ################################### #一、上節課復習:在for循環式,調用對象內部