如果一個正整數m的所有小於m的不同因子(包括1)加起來正好等於m本身,那麼就被稱它為完全數。它是指這樣的一些特殊的自然數,它所有的真因子(即除了自身以外的約數)的和,恰好等於它本身。 注意:1沒有真因
int IsPerfect(int x);
int main ()
{
int m;
printf("Input m:\n");
scanf("%d", &m);
if (m > 1)
{
if (IsPerfect(m))
printf("%d is a perfect number\n", m);
else
printf("%d is not a perfect number\n", m);
}
else
printf("%d is not a perfect number\n", m);
}
int IsPerfect(int x)
{
int i, sum = 1;
for (i = 2; i < x; i++)
{
if (x % i == 0)
sum =sum+ i;
}
if (sum == x)
return 1;
else
return 0;
}
相關推薦
如果一個正整數m的所有小於m的不同因子(包括1)加起來正好等於m本身,那麼就被稱它為完全數。它是指這樣的一些特殊的自然數,它所有的真因子(即除了自身以外的約數)的和,恰好等於它本身。 注意:1沒有真因
#include<stdio.h>int IsPerfect(int x);int main (){ int m; printf("Input m:\n"); scanf("%d", &m); if (m > 1) {
一個正整數如果等於組成它的各位數字的階乘之和,該整數稱為階乘和數。 例如,145=1!+4!+5!,則145是一個三位階詳細和數。 請問:50000內共有多少個階乘和數?所有的階乘和數(按字典序,即1打頭的在前,2打頭的次之,..., 空格分隔)
#include <stdio.h>long jc(int x); int main() { int a, b, c, d, e, f, g; long m1, m2, m3, m4, m5, m6, n1, n2, n3, n4, n5, n6; for(a = 1; a <=
輸入一個正整數陣列,把數組裡所有數字拼接起來排成一個數, 列印能拼接出的所有數字的最小的一個。例如輸入{3,32,321,4},則列印最小的數字是 3213234
public class FandMax { public void makeMax(int[] nums){ boolean flag=true; for (int i = 0; i < nums.length; i++) { for (int j = 0; j <
輸入一個正整數n,輸出所有和為n的連續正整數序列
1 public static void main(String[] args) { 2 Scanner sc = new Scanner(System.in); 3 while (true) { 4 System.out.prin
給定一個正整數k(3≤k≤15),把所有k的方冪及所有有限個互不相等的k的方冪之和構成一個遞增的序列,例如,當k=3時,這個序列是: 1,3,4,9,10,12,13,… (該序列實際上就是:3^0,3^1,3^0+3^1,3^2,3^0+3^2,3^1+3^2,3^0+3^1+3^2,…) 請你求
只有1行,為2個正整數,用一個空格隔開: k N (k、N的含義與上述的問題描述一致,且3≤k≤15,10≤N≤1000)。 計算結果,是一個正整數(在所有的測試資料中,結果均不超過2.1*10^9)。(整數前不要有空格和其他符號)。 #include<stdio.h> int
輸入一個正整數n,輸出1到n的所有排列
思路:字典序演算法 1、從序列的末端開始,找到第一個相鄰數組合,其中第一個數小於第二個數,比如:1 2 3 4,第一個組合是34,記錄3的位置為i; 2、從i位置之後的元素中,從末端開始找第一個大於它的數,就是4,交換這兩個數,變為 1 2 4 3; 3、將i位置之後的數全
java實現輸入一個正整數n,輸出全部連續正整數相加後等於n的所有序列。
題目如下: 請用java實現輸入一個正整數n,輸出以下格式,全部連續正整數相加後等於n的所有序列。 例如: 15=1+2+3+4+5; 15=4+5+6; 15=7+8; 我從網上文章中得到的思路,
將一個正整數n,拆分成連續的自然數之和,輸出所有可能的情況
http://blog.csdn.net/kennyrose/article/details/6544518 本文連結,感謝分享!! from程式設計之美2.21 問題描述:將一個正整數,拆分成連續的自然數之和,輸出所有可能的情況 例如: 3 = 1+2
網易筆試題:輸入一個正整數,若該數能用幾個連續正整數之和表示,則輸出所有可能的正整數序列。
解題思路: **找到數學規律。n以i為開頭的j個整數的和為i*j+j*(j-1)/2;判斷輸入的整數是否和計算結果相同。 如果相同則迴圈輸出以i為開頭的j個整數。 這個題目給我最大的啟示就是要學會用數學的方法來解決問題,在此之前我一直希望通過一種遞
給定一個正整數陣列,找所有元素組合起來最大的值(答案)
class MaxNumber(object): def __init__(self, intlst): self.lst = intlst self.ilen = len(self.lst) self.result
【Java】【演算法練習】輸入一個正整數陣列,把數組裡所有數字拼接起來排成一個數,列印能拼接出的所有數字中最小的一個。例如輸入陣列{3,32,321},則打印出這三個數字能排成的最小數字為321323。
題目描述: 輸入一個正整數陣列,把數組裡所有數字拼接起來排成一個數,列印能拼接出的所有數字中最小的一個。例如輸入陣列 {3,32,321},則打印出這三個數字能排成的最小數字為321323。 解題思路: 解題思路: 比較兩個字串s1 S2的
輸入一個正整數數組,把數組裏所有數字拼接起來排成一個數。打印能拼接出所有數字中最小的一個
style void ole min 一個數 string right public [] 題目: 輸入一個正整數數組,把數組裏所有數字拼接起來排成一個數。打印能拼接出所有數字中最小的一個。 解答: 1 public class Solution { 2 3
給定一個正整數k(3≤k≤15),把所有k的方冪及所有有限個互不相等的k的方冪之和構成一個遞增的序列
題目如下 分析 我們可以逆向轉化,把n轉化為二進位制數,然後把他當做K進位制,然後轉化為十進位制的數輸出就是答案結果了 程式碼如下 #include<stdio.h> #include<math.h> #include<stdlib.
一個正整數k(3≤k≤ 15),把所有k的方冪及所有有限個互不相等的k的方幕之和構成個通增的序列
提供一個演算法,其實由於是將有限個互不相等的k,所以我們這裡考察第n項的時候,能取到的最大的k的冪次,不妨設次數是p,那麼與之相關的很顯然應該有2^p個,於是就想到了其實an與k的次數是和n的二進位制有關的. 假設n=∑bk2k,bk=1或0.於是我們有an=∑(bk*k(k-1)). 比如
列出一個正整數表示成n(n>=2)個連續正整數之和的所有形式
一個正整數有可能可以被表示為n(n>=2)個連續正整數之和,如: 15=1+2+3+4+5 15=4+5+6 15=7+8 請編寫程式,根據輸入的任何一個正整數n,找出符合這種要求的所有連續
問題描述 給定一個序列,每次詢問序列中第l個數到第r個數中第K大的數是哪個。 輸入格式 第一行包含一個數n,表示序列長度。 第二行包含n個正整數,表示給定的序列。 第三個包含一個正整數m,表
#include<iostream> using namespace std; void print(int *a,int len) { int i=0; for(;i<len;++i) cout<<i+1<<':'<<
求一個正整數N的因子個數或該正整數N的所有因子之和
如果要求一個正整數N的因子個數,只需要對其質因子分解,得到各質因子$P_i$的個數分別為$e_1$、$e_2、...、e_k$,於是N的因子個數就是$(e_1+1)*(e_2+1)*...*(e_k+1)$。原因是對每個質因子$P_i$都可以選擇其出現$0$次、$1$次、...、$e_i$,共$e_i+1$種
實現atoi這個函式,將一個字串轉換為整數。如果沒有合法的整數,返回0。如果整數超出了32位整數的範圍,返回INT_MAX(2147483647)如果是正整數
public class Solution { /** * @param str: A string * @return: An integer */ public int atoi(String str) { // write your code here
輸入一個正整數n,輸出一個最小正整數m,使得m的各位乘積等於n
/* 1.:編寫一個函式func,輸入一個正整數n,返回一個最小的正整數m,使得m的各位乘積等於n,例如輸入100.輸出455,輸入36,輸出49 */ #if 0 int func(int
任意給定一個正整數N,求一個最小的正整數M(M>1),使得N*M的十進位制表示形式裡只含有1和0。
解決這個問題首先考慮對於任意的N,是否這樣的M一定存在。可以證明,M是一定存在的,而且不唯一。 簡單證明:因為 這是一個無窮數列,但是數列中的每一項取值範圍都在[0, N-1]之間。所以這個無窮數列中間必定存在迴圈節。即假設有s,t均是正整數,且s<t,有 。於是迴圈節長度為t-s。於是10