1. 程式人生 > >7-3 找完數(20 分)

7-3 找完數(20 分)

7-3 找完數(20 分)

所謂完數就是該數恰好等於除自身外的因子之和。例如:6=1+2+3,其中1、2、3為6的因子。本題要求編寫程式,找出任意兩正整數mn之間的所有完數。

輸入格式:

輸入在一行中給出2個正整數mn1<mn10000),中間以空格分隔。

輸出格式:

逐行輸出給定範圍內每個完數的因子累加形式的分解式,每個完數佔一行,格式為“完數 = 因子1 + 因子2 + ... + 因子k”,其中完數和因子均按遞增順序給出。若區間內沒有完數,則輸出“None”。

輸入樣例:

2 30

輸出樣例:

6 = 1 + 2 + 3
28 = 1 + 2 + 4 + 7 + 14
#include<stdio.h>
 main()
{
	int m, n, i, j, k, flag = 0, sum = 0;
	scanf("%d%d", &m, &n);
	if (n < 6 || n<8128 && n>496 && m<8128 && m>496 || n>28 && n<496&&m>28 && m<496)
		printf("None");
	else if (n < 500 && n >= 6)
	for (i = m; i <= n; i++)
	{
		if (i == 1) printf("1 = 1\n");
		for (j = 1; j <= i / 2; j++)
		{
			if (i%j == 0) sum += j;
		}
		if (sum == i)
		{
			printf("%d = 1", i);
			for (k = 2; k <= i / 2; k++)
			if (i%k == 0)
				printf(" + %d", k);
			printf("\n");
		}
		sum = 0;
	}
	
	else{
		for (i = m; i <= 500; i++)
		{
			if (i == 1) printf("1 = 1\n");
			for (j = 1; j <= i / 2; j++)
			{
			if (i%j == 0)
				sum += j;
			}
			if (sum == i)
			{
				printf("%d = 1", i);
				for (k = 2; k <= i / 2; k++)
				if (i%k == 0) 
				printf(" + %d", k);
				printf("\n");
			}
			    sum = 0;
		}
		if (n >= 8128)
		printf("8128 = 1 + 2 + 4 + 8 + 16 + 32 + 64 + 127 + 254 + 508 + 1016 + 2032 + 4064\n");
	}
	
}


作者: 陳建海 單位: 浙江大學 時間限制: 400ms 記憶體限制: 64MB 程式碼長度限制: 16KB

相關推薦

7-3 20

7-3 找完數(20 分) 所謂完數就是該數恰好等於除自身外的因子之和。例如:6=1+2+3,其中1、2、3為6的因子。本題要求編寫程式,找出任意兩正整數m和n之間的所有完數。 輸入格式:

7-45 20

分解 tex bre ... can ret style 正整數 bsp 所謂完數就是該數恰好等於除自身外的因子之和。例如:6=1+2+3,其中1、2、3為6的因子。本題要求編寫程序,找出任意兩正整數m和n之間的所有完數。 輸入格式: 輸入在一行中給出2個正整數m和n(1&

PAT 7-1 20

#include<iostream> #include<vector> #include<cstdio> #include<set> #include<map> #include<string> #

7-45 20

7-45 找完數 (20 分) 所謂完數就是該數恰好等於除自身外的因子之和。例如:6=1+2+3,其中1、2、3為6的因子。本題要求編寫程式,找出任意兩正整數m和n之間的所有完數。 輸入格式: 輸

中M2018春C入門和進階練習集-程式設計題45 7-45 20

7-45 找完數(20 分) 所謂完數就是該數恰好等於除自身外的因子之和。例如:6=1+2+3,其中1、2、3為6的因子。本題要求編寫程式,找出任意兩正整數m和n之間的所有完數。 輸入格式: 輸入在一行中給出2個正整數m和n(1<m≤n≤10000),中間以空格分

7-7 20

一、題目 二、個人理解 此題就是先進行因子的計算,因為必須要判斷所有因子和是否等於數字,所以要儲存以前的因子,這裡我們可以採用陣列來進行儲存。 C語言: #include <s

20

所謂完數就是該數恰好等於除自身外的因子之和。例如:6=1+2+3,其中1、2、3為6的因子。本題要求編寫程式,找出任意兩正整數m和n之間的所有完數。 輸入格式: 輸入在一行中給出2個正整數m和n(1),中間以空格分隔。 輸出格式: 逐行輸出給定範圍內每個完數的因子

交換類排序與選擇類排序-7-3 冒泡法排序 20

將N個整數按從小到大排序的氣泡排序法是這樣工作的:從頭到尾比較相鄰兩個元素,如果前面的元素大於其緊隨的後面元素,則交換它們。通過一遍掃描,則最後一個元素必定是最大的元素。然後用同樣的方法對前N−1個元素進行第二遍掃描。依此類推,最後只需處理兩個元素,就完成了對N個數的排序。 本題要求對任意給

7-56 鞍點 20

7-56 找鞍點 (20 分) 一個矩陣元素的“鞍點”是指該位置上的元素值在該行上最大、在該列上最小。 本題要求編寫程式,求一個給定的n階方陣的鞍點。 輸入格式: 輸入第一行給出一個正整數n(1

## 7-9 梅森 20

7-9 梅森數 (20 分) 形如2^ ​n ​​ −1的素數稱為梅森數(Mersenne Number)。例如2^ ​2 ​​ −1=3、2^ ​3 ​​ −1=7都是梅森數。1722年,雙目失明的瑞士數學大師尤拉證明了2^ ​31 ​​ −1=2147483

7-3 素數對猜想20

讓我們定義d​n​​為:d​n​​=p​n+1​​−p​n​​,其中p​i​​是第i個素數。顯然有d​1​​=1,且對於n>1有d​n​​是偶數。“素數對猜想”認為“存在無窮多對相鄰且差為2的素數”。 現給定任意正整數N(<10​5​​),請計算不

習題3.8 符號配對20 浙大版《據結構第2版》題目集

檢查 size pro 是否 ring 所有 編寫 bre ace 請編寫程序檢查C語言源程序中下列符號是否配對:/*與*/、(與)、[與]、{與}。 輸入格式: 輸入為一個C語言源程序。當讀到某一行中只有一個句點.和一個回車的時候,標誌著輸入結束。程序中需要檢

基礎程式設計題目集:6-7 統計某類完全平方20

int IsTheNumber(const int N) { int n = sqrt(N); int k = 0, tmp = N; int a[5] = { 0 }; //判斷是否是完全平方數 if (n*n == N) { //先N轉陣列 //判斷有多少位 while (

PTA 中M2018秋C入門和進階練習 7-44 黑洞 20

7-44 黑洞數 (20 分) 黑洞數也稱為陷阱數,又稱“Kaprekar問題”,是一類具有奇特轉換特性的數。 任何一個各位數字不全相同的三位數,經有限次“重排求差”操作,總會得到495。最後所得的

PTA_基礎程式設計題目集_6-7 統計某類完全平方 20

題目地址 我的程式碼 int IsTheNumber(const int N) { int n = N, tn, jud = 0, mark = 0; tn = (int)(sqrt((double)(n))); //利用非完全平方整數,開方存在小數;double強行轉

6-7 統計某類完全平方20

本題要求實現一個函式,判斷任一給定整數N是否滿足條件:它是完全平方數,又至少有兩位數字相同,如144、676等。 函式介面定義: int IsTheNumber ( const int N ); 其中N是使用者傳入的引數。如果N滿足條件,則該函式必須返回1,否則返回0

6-7 統計某類完全平方20 本題要求實現一個函式,判斷任一給定整數N是否滿足條件:它是完全平方,又至少有兩位數字相同,如144、676等。

int IsTheNumber ( const int N ) {   int r=sqrt(N);   int n=N;   int a[10]={};   if(r*r==N){     int d;     while(n){       d=n%10;      

7-28 猴子選大王20

code bre 大王 printf cti 圈子 格式 猴子選大王 can 7-28 7-28 猴子選大王(20 分) 一群猴子要選新猴王。新猴王的選擇方法是:讓N只候選猴子圍成一圈,從某位置起順序編號為1~N號。從第1號開始報數,每輪從1報到3,凡報到3的猴子即退出圈子

PAT-乙-1064 1064 朋友 20

程式碼 #include <iostream> #include <vector> #include <set> #include <algorithm> using namespace std; int main() { i

1064 朋友 20

#include <iostream> using namespace std; int main() { int n; cin>>n; int a[37]={0}; int f=0; while(n--){ int