C_要发就发

“1898--要发就发”。请将不超过1993的所有素数从小到大排成第一行,第二行上的每个素数都等于它右肩上的素数之差。编程求出:第二行数中是否存在这样的若干个连续的整数,它们的和恰好是1898?假好存在的话,又有几种这样的情况?第一行:2 3 5 7 11 13 17......1979 1987 1993第二行:1 2 2 4 2 4...... 8 6 *问题分析与算法设计首先从数学上分析该问题:假设第一行中的素数为n[1]、n[2]、n[3]....n、...第二行中的差值为m[1]、m[2]、m[3]...m[j]...。其中m[j]为:m[j]=n[j+1]-n[j]。则第二...
2007-10-05 04:40 | 阅读 1469 次 | 评论 0 条

C_回文素数

求不超过1000的回文素数。 *问题分析与算法设计  所谓回文素数是指,对一个整数n从左向右和从由向左读其结果值相同且是素数,即称n为回文素数。所以本题的重点不是判断素数的方法,而是求回文整数。构造回文数的方法很多,这里仅介绍一种最简单的算法。实现思路是先求出一个整数的回文数,再判断是否为素数。  不超过1000的回文数包括二位和三位的回文数,我们采用穷举法来构造一个整数并求与其对应的反序数,若整数与其反序数相等,则该整数是回文数。 *程序说明与注释#include<stdio.h> int a(int n)int main(){int i,j,t,k,s;printf("Fol...
2007-10-05 04:39 | 阅读 1527 次 | 评论 0 条

C_可逆素数

求四位的可逆素数。可逆素数指:一个素数将其各位数字的顺序倒过来构成的反序数也是素数。 *问题分析与算法设计  本题的重点不是判断素数的方法,而是求一个整数的反序数。求反序数的方法是从整数的末尾依次截取最后一位数字,每截取一次后整数缩小10倍,将截取的数字作为新的整数的最后一位(新的整数扩大10倍后加上被截取的数字)。这样原来的整数的数字从低到高被不断地截取,依次作为新的整数从高到低的各位数字。 *程序说明与注释#include<stdio.h>#include<math.h>int num(int number);int ok(int number);int main(){int ...
2007-10-05 04:39 | 阅读 2400 次 | 评论 0 条

C_歌德巴赫猜想

验证:2000以内的正偶数都能够分解为两个素数之和(即验证歌德巴赫猜想对2000以内的正偶数成立)。 *问题分析与算法设计为了验证歌德巴赫猜想对2000以内的正偶数都是成立的,要将整数分解为两部分,然后判断出分解出的两个整数是否均为素数。若是,则满足题意;否则重新进行分解和判断。程序中对判断是否为素数的算法进行了改进,对整数判断“用从2开始到该整数的一半”改为“2开始到该整数的平方根”。原因何在请自行分析。 *程序说明与注释#include<stdio.h>#include<math.h>int fflag(int n);int main(){int i,n;for(i=4;i<=2...
2007-10-05 04:38 | 阅读 1144 次 | 评论 0 条

C_求素数

求素数表中1~1000之间的所有素数 *问题分析与算法设计素数就是仅能衩1和它自身整除的整数。判定一个整数n是否为素数就是要判定整数n能否被除1和它自身之外的任意整数整除,若都不能整除,则n为素数。程序设计时i可以从2开始,到该整数n的1/2为止,用i依次去除需要判定的整数,只要存在可以整除该数的情况,即可确定要判断的整数不是素数,否则是素数。 *程序说明与注释#include<stdio.h>int main(){int n1,nm,i,j,flag,count=0;do{printf("Input START and END=?");scanf("%d%d",&amp;n1,&a...
2007-10-04 04:51 | 阅读 3225 次 | 评论 0 条

C_求具有abcd=(ab+cd)2性质的四位数

3025这个数具有一种独特的性质:将它平分为二段,即30和25,使之相加后求平方,即(30+25)2,恰好等于3025本身。请求出具有这样性质的全部四位数。 *问题分析与算法设计具有这种性质的四位数没有分布规律,可以采用穷举法,对所有四位数进行判断,从而筛选出符合这种性质的四位数。具体算法实现,可任取一个四位数,将其截为两部分,前两位为a,后两位为b,然后套用公式计算并判断。 *程序说明与注释#include<stdio.h>int main(){int n,a,b;printf("There are following number with 4 digits satisfied ...
2007-10-04 04:46 | 阅读 2669 次 | 评论 0 条

C_回文数

打印所有不超过n(取n<256) 的其平方具有对称性质的数(也称回文数)。 *问题分析与算法设计对于要判断的数n,计算出其平方后(存于a),将a的每一位进行分解,再按a的从低到高的顺序将其恢复成一个数k(如n=13,则a=169且k=961),若a等于k则可判定n为回亠数。 *程序说明与注释原程序好像有错,而且比较费解,现基于原程序修改如下(如果读者还发现错误请提出): #include<stdio.h>int main(void){int m[16],n,i,t,count=0;long unsigned a,k;printf("No. number it's square(p...
2007-10-04 04:45 | 阅读 1675 次 | 评论 0 条

C_自守数

自守数是指一个数的平方的尾数等于该数自身的自然数。例如:252=625 762=5776 93762=87909376请求出200000以内的自守数 *问题分析与算法设计若采用“求出一个数的平方后再截取最后相应位数”的方法显然是不可取的,因为计算机无法表示过大的整数。分析手工方式下整数平方(乘法)的计算过程,以376为例:376 被乘数X 376 乘数----------2256 第一个部分积=被乘数*乘数的倒数第一位2632 第二个部分积=被乘数*乘数的倒数第二位1128 第三个部分积=被乘数*乘数的倒数第三位----------141376 积本问题所关心的是积的最后三位。分析产生...
2007-10-04 04:44 | 阅读 1898 次 | 评论 0 条

C_亲密数

如果整数A的全部因子(包括1,不包括A本身)之和等于B;且整数B的全部因子(包括1,不包括B本身)之和等于A,则将整数A和B称为亲密数。求3000以内的全部亲密数。 *问题分析与算法设计按照亲密数定义,要判断数a是否有亲密数,只要计算出a的全部因子的累加和为b,再计算b的全部因子的累加和为n,若n等于a则可判定a和b是亲密数。计算数a的各因子的算法:用a依次对i(i=1~a/2)进行模运算,若模运算结果等于0,则i为a的一个因子;否则i就不是a的因子。 *程序说明与注释#include<stdio.h>int main(){int a,i,b,n;printf("There are ...
2007-10-04 04:44 | 阅读 1048 次 | 评论 0 条

C_完全数

如果一个数恰好等于它的因子之和,则称该数为“完全数”。 *问题分析与算法设计根据完全数的定义,先计算所选取的整数a(a的取值1~1000)的因子,将各因子累加于m,若m等于a,则可确认a为完全数。 *程序说明与注释#include<stdio.h>int main(){int a,i,m;printf("There are following perfect numbers smaller than 1000:\n");for(a=1;a<1000;a++) /*循环控制选取1~1000中的各数进行判断*/{for(m=0,i=1;i<=a/2;i++) /*计算a的因子,并将各因子...
2007-10-04 04:43 | 阅读 1277 次 | 评论 0 条

C_阿姆斯特朗数

如果一个正整数等于其各个数字的立方和,则称该数为阿姆斯特朗数(亦称为自恋性数)。如 407=43+03+73就是一个阿姆斯特朗数。试编程求1000以内的所有阿姆斯特朗数。 *问题分析与算法设计可采用穷举法,依次取1000以内的各数(设为i),将i的各位数字分解后,据阿姆斯特朗数的性质进行计算和判断。 *程序说明与注释#include<stdio.h>int main(){int i,t,k,a[3];printf("There are follwing Armstrong number smaller than 1000:\n");for(i=2;i<1000;i++) /*穷举要判...
2007-10-04 04:42 | 阅读 1899 次 | 评论 1 条

C_由两个平方三位数获得三个平方二位数

已知两个平方三位数abc和xyz,其中a、b、c、x、y、z未必是不同的;而ax、by、cz是三个平方二位数。请编程求三位数abc和xyz。 *问题分析与算法设计任取两个平方三位数n和n1,将n从高向低分解为a、b、c,将n1从高到低分解为x、y、z。判断ax、by、cz是否均为完全平方数。 *程序说明与注释#include<stdio.h>#include<math.h>void f(int n,float* s);int main(){int i,t;float a[3],b[3];print("The possible perfect squares combinations ...
2007-09-30 04:59 | 阅读 2419 次 | 评论 0 条

C_求车速

一辆以固定速度行驶的汽车,司机在上午10点看到里程表上的读数是一个对称数(即这个数从左向右读和从右向左读是完全一样的),为95859。两小时后里程表上出现了一个新的对称数。问该车的速度是多少?新的对称数是多少? *问题分析与算法设计根据题意,设所求对称数为i,其初值为95589,对其依次递增取值,将i值的每一位分解后与其对称位置上的数进行比较,若每个对称位置上的数皆相等,则可判定i即为所求的对称数。 *程序说明与注释#include<stdio.h>int main(){int t,a[5]; /*数组a存放分解的数字位*/long int k,i;for(i=95860;;i++)...
2007-09-30 04:59 | 阅读 1763 次 | 评论 0 条

C_4位反序数

设N是一个四位数,它的9倍恰好是其反序数,求N。反序数就是将整数的数字倒过来形成的整数。例如:1234的反序数是4321。 *问题分析与算法设计可设整数N的千、百、十、个位为i、j、k、l,其取值均为0~9,则满足关系式:(i*103+j*102+10*k+l)*9=(l*103+k*102+10*j+i)的i、j、k、l即构成N。 *程序说明与注释#include<stdio.h>int main(){int i;for(i=1002;i<1111;i++) /*穷举四位数可能的值*/if(i%10*1000+i/10%10*100+i/100%10*10+i/1000==i*9)...
2007-09-30 04:57 | 阅读 1719 次 | 评论 0 条

C_一个奇异的三位数

一个自然数的七进制表达式是一个三位数,而这个自然数的九进制表示也是一个三位数,且这两个三位数的数码正好相反,求这个三位数。 *问题分析与算法设计根据题意可知,七进制和九进制表示的这全自然数的每一位一定小于7,可设其七进制数形式为kji(i、j、k的取值分别为1~6),然后设其九进制表示形式为ijk。 *程序说明与注释#include<stdio.h>int main(){int i,j,k;for(i=1;i<7;i++)for(j=0;j<7;j++)for(k=1;k<7;k++)if(i*9*9+j*9+k==i+j*7+k*7*7){printf("The special n...
2007-09-29 05:48 | 阅读 1587 次 | 评论 0 条

C_8除不尽的自然数

一个自然数被8除余1,所得的商被8除也余1,再将第二次的商被8除后余7,最后得到一个商为a。又知这个自然数被17除余4,所得的商被17除余15,最后得到一个商是a的2倍。求这个自然数。 *问题分析与算法设计根据题意,可设最后的商为i(i从0开始取值),用逆推法可以列出关系式:(((i*8+7)*8)+1)*8+1=((2*i*17)+15)*18+4再用试探法求出商i的值。 *程序说明与注释#include<stdio.h>int main(){int i;for(i=0;;i++) /*试探商的值*/if(((i*8+7)*8+1)*8+1==(34*i+15)*17+4){ /*...
2007-09-29 05:47 | 阅读 1359 次 | 评论 0 条

C_有限5位数

个位数为6且能被3整除的五位数共有多少? *题目分析与算法设计根据题意可知,满足条件的五位数的选择范围是10006、10016。。。99996。可设基础数i=1000,通过计算i*10+6即可得到欲选的数(i的变化范围是1000~999),再判断该数能否被3整除。 *程序说明与注释#include<stdio.h>int main(){long int i;int count=0; /*count:统计满足条件的五位数的个数*/for(i=1000;i<9999;i++)if(!((i*10+6)%3)) /*判断所选的数能否被3整除*/count++; /*若满足条件则计数*/pr...
2007-09-28 05:25 | 阅读 1990 次 | 评论 1 条

C_平分七筐鱼

甲、乙、丙三位鱼夫出海打鱼,他们随船带了21只箩筐。当晚返航时,他们发现有七筐装满了鱼,还有七筐装了半筐鱼,另外七筐则是空的,由于他们没有秤,只好通过目测认为七个满筐鱼的重量是相等的,7个半筐鱼的重量是相等的。在不将鱼倒出来的前提下,怎样将鱼和筐平分为三份? *问题分析与算法设计根据题意可以知道:每个人应分得七个箩筐,其中有3.5筐鱼。采用一个3*3的数组a来表示三个人分到的东西。其中每个人对应数组a的一行,数组的第0列放分到的鱼的整筐数,数组的第1列放分到的半筐数,数组的第2列放分到的空筐数。由题目可以推出:。数组的每行或每列的元素之和都为7;。对数组的行来说,满筐数加半筐数=3.5...
2007-09-28 05:24 | 阅读 1622 次 | 评论 0 条

C_出售金鱼

买卖提将养的一缸金鱼分五次出售系统上一次卖出全部的一半加二分之一条;第二次卖出余下的三分之一加三分之一条;第三次卖出余下的四分之一加四分之一条;第四次卖出余下的五分之一加五分之一条;最后卖出余下的11条。问原来的鱼缸中共有几条金鱼? *问题分析与算法设计题目中所有的鱼是分五次出售的,每次卖出的策略相同;第j次卖剩下的(j+1)分之一再加1/(j+1)条。第五次将第四次余下的11条全卖了。假定第j次鱼的总数为X,则第j次留下:x-(x+1)/(j+1)当第四次出售完毕时,应该剩下11条。若X满足上述要求,则X就是题目的解。应当注意的是:"(x+1)/(j+1)"应满足整除条件。试探X的初...
2007-09-28 05:23 | 阅读 1692 次 | 评论 0 条

C_捕鱼和分鱼

A、B、C、D、E五个人在某天夜里合伙去捕鱼,到第二天凌晨时都疲惫不堪,于是各自找地方睡觉。日上三杆,A第一个醒来,他将鱼分为五份,把多余的一条鱼扔掉,拿走自己的一份。B第二个醒来,也将鱼分为五份,把多余的一条鱼扔掉,保持走自己的一份。C、D、E依次醒来,也按同样的方法拿走鱼。问他们合伙至少捕了多少条鱼? *问题分析与算法设计根据题意,总计将所有的鱼进行了五次平均分配,每次分配时的策略是相同的,即扔掉一条鱼后剩下的鱼正好分成五份,然后拿走自己的一份,余下其它的四份。假定鱼的总数为X,则X可以按照题目的要求进行五次分配:X-1后可被5整除,余下的鱼为4*(X-1)、5。若X满足上述要求,...
2007-09-28 05:23 | 阅读 1776 次 | 评论 0 条
浏览477069次