7-12 梅森数
形如2n−1的素数称为梅森数(Mersenne Number)。例如22−1=3、23−1=7都是梅森数。1722年,双目失明的瑞士数学大师欧拉证明了231−1=2147483647是一个素数,堪称当时世界上“已知最大素数”的一个记录。
本题要求编写程序,对任一正整数n(n<20),输出所有不超过2n−1的梅森数。
输入格式:
输入在一行中给出正整数n(n<20)。
输出格式:
按从小到大的顺序输出所有不超过2n−1的梅森数,每行一个。如果完全没有,则输出“None”。
输入样例:
6
输出样例:
3
7
31
代码:
#include <stdio.h>
#include <math.h>
int main(){
int i,a,j,b;
scanf("%d",&a);
for(j=2;j<=a;j++)
{
b=pow(2,j)-1;
for(i=2;i<b;i++)
{
if(b%i==0)
break;
}
if(b==i)
{printf("%d\n",b);}
} if(a==1)
printf("None");
}
7-13 输出小于n的所有完数
本题要求从小到大输出小于n(2≤n≤10000)的所有完数。所谓完数就是该数恰好等于除自身外的因子之和。例如:6=1+2+3,其中1、2、3为6的因子。
输入格式:
输入在一行中给出n(2≤n≤10000)的值。
输出格式:
输出完数,每个数占6位。如果小于n的完数不存在,则输出"NONE"。
输入样例:
1000
输出样例:
6 28 496
代码:
#include <stdio.h>
int main(){
int n,i,j,k;
scanf("%d",&n);
for(i=1;i<n;i++){
for(k=0,j=1;j<i;j++){
if(i%j==0)
k+=j;
}
if(i==k)
printf("%6d",i);
}
if(n<=6)
printf("NONE");
}
7-23 韩信点兵
在中国数学史上,广泛流传着一个“韩信点兵”的故事&#x