求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
求1-1000內所有的完數(一個數如果恰好等於它的因子之和,這個數就稱為“完數”。如6就是1個完數: 6=1+2+3,因子數就是所有可以整除這個數的數,但是不包括這個數自身.比如15的
using System; using System.Collections.Generic; using System.Linq; using System.Text; using System.Threading.Tasks; namespace _3a { c
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的因子為1、2、3,而6=1+2+3,因此6是"完數"。 程式設計序找出N之內的所有完數,並按下面格式輸出其因子
寫在前面,心得感悟~ 程式碼越來越有難度! 這個ACM題,我除錯了 將近50次~ 一個小時! 真的是,年紀輕輕的搞什麼ACM呀! 關於題的解決思路放在下面再寫吧! 題目描述 一個數如果恰好等於它的因子之和,這個數就稱為"完數"。 例如,6的因子為1、2、3,而6=1+2+
C++課後練習——程式設計求1000之內的完全數。說明:完全數就是:除了它本身以外所有因子之和等於其本身,例如6=1+2+3,6就是一個完全數
程式設計求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循環式,調用對象內部