if(f(a+b)&&f(a-b))
{printf("(%d,%d)\n",a,b);
sum=sum+(a-b);}
printf("%d",sum);
}
梅森尼数是指能使2^n-1为素数的数n,求[1,21]范围内最大的梅素尼数?
19
梅森尼数是指能使2^n-1为素数的数n,求[1,21]范围内有多少个梅森尼数?
7
#include"math.h"
intprime(inti){
intj;
for(j=2;j<=sqrt(i);j++)
if(i%j==0)
return0;
return1;
}
main(){
inti,j,p,sum=0;
for(i=2;i<=21;i++)
{p=1;
for(j=1;j<=i;j++)
p=p*2;
if(prime(p-1)==1)
{printf("%d",i);
sum++;}
}
printf("%d\n",sum);
}
求100~200间的全部素数
方法一:
#include
#include
voidmain()
{intm,k,i,n=0;
for(m=101;m<=200;m=m+2)
{
k=sqrt(m);
for(i=2;i<=k;i++)
if(m%i==0)break;
if(i>=k+1)
{
printf("%d″,m);
n=n+1;
}
if(n%10==0)printf(″\n″);
}
printf("\n");}
方法二:
#include
main(){
inti,j,k,n=0;
for(i=100;i<=200;i++)
{k=1;
for(j=2;j<=sqrt(i);j++)
if(i%j==0)
k=0;
if(k)
{printf("%d",i);
n++;}
}
printf("\n");
printf("%d\n",n);
}
一个数如果刚好与它所有的因子之和相等,则称该数为一个“完数”,如:
6=1+2+3,则6就是一个完数。
求出200到500之间所有的完数之和。
496
main(){
intn,s,i,total=0;
for(n=200;n<=500;n++)
{s=0;
for(i=1;iif(n%i==0)
s=s+i;
if(s==n)
total=total+n;
}
printf("%d\n",total);
}
求出1000以内所有的完数,并输出其因子
main(){
intn,s,i;
for(n=1;n<=1000;n++)
{s=0;
for(i=1;iif(n%i==0)
s=s+i;
if(s==n)
{printf("%d",n);
for(i=1;iif(n%i==0)
printf("%d",i);
printf("\n");
}
}
}
编程序求出1到5000之间的能被5整除的前若干个偶数之和,当和大于500时程序退出。
550
方法一
Voidmain(){
intsum=0,i;
for(i=2;i<=5000;i=i+2)
{if(i%5==0)
sum=sum+i;
if(sum>500)
break;
}
printf("%d,%d\n",sum,i);
}
方法二
#include
voidmain()
{
intsum=0,i;
i=2;
while(sum<=500)
{if(i%5==0)
sum=sum+i;
i=i+2;
}
printf("%d,%d\n",sum,i);
getch();
}
编程序求出2+4+8+16+32+…这样的数之和。
如果累加数大于500时,则程序终止并输出结果。
510
方法一:
main(){
intsum=0,i=2;
while(sum<=500)
{sum=sum+i;
i=i*2;
}
printf("%d,%d\n",sum,i/2);}
方法二:
main(){
intsum=0,i=2;
for(i=2;i<=5000;i=i*2)
{sum=sum+i;
if(sum>500)
break;
}
printf("%d,%d\n",sum,i);
}
“水仙花数”是指这样的数,其各位数字的立方和等于该数本身,如:
153=1^3+5^3+3^3。
编写程序求100至999的范围内有多少个水仙花数。
4
main(){
inti,j,k,n;
for(n=100;n<=999;n++)
{i=n/100;
j=(n/10)%10;
k=n%10;
if(n==i*i*i+j*j*j+k*k*k)
printf("%d",n);
}
}
一个数如果恰好等于它的所有真因子之和,这个数就称为“完数”。
例如,6的真因子为1,2,3,而6=1+2+3,因此,6是“完数”。
求200到500之间的的所有完数之和。
496
main(){
intn,s,i,total=0;
for(n=200;n<=500;n++)
{s=0;
for(i=1;iif(n%i==0)
s=s+i;
if(s==n)
total=total+n;
}
printf("%d\n",total);
}
求[100,200]范围内素数的个数。
21
#include
main(){
inti,j,k,n=0;
for(i=100;i<=200;i++)
{k=1;
for(j=2;j<=sqrt(i);j++)
if(i%j==0)
k=0;
if(k)
n++;
printf("%d",i);
}
printf("\n");
printf("%d\n",n);
}
编写程序,求所有符合算式ij*ji=1300的最小数ij(即i*10+j)。
其中i、j是1~9之间的一位整数。
25
voidmain()
{
inti,j,n,t=0;
for(n=11;n<=99;n++)
{i=n/10;
j=n%10;
if(n*(j*10+i)==1300)
break;}
printf("%d\n",n);
}
德国数学家哥德巴赫曾猜测:
任何大于6的偶数都可以分解成两个素数的和。
但有些偶数可以分解成多种素数对的和,如:
10=3+7,10=5+5,即10可以分解成两种不同的素数对。
试求6744可以分解成多少种不同的素数对(注:
A+B与B+A认为是相同素数对) 144
#include
#include
voidmain()
{
inta,b,i,j,f1,f,n=0;
for(a=3;a<6744/2;a=a+2)
{
f1=1;
for(j=2;j<=sqrt(a);j++)
{
if(a%j==0)
f1=0;
}
if(f1)
{
b=6744-a;
f=1;
for(i=2;i<=sqrt(b);i++)
{
if(b%i==0)
f=0;}
if(f)
{printf("%d,%d\n",a,b);
n++;}}
}
printf("%d\n",n);
}
方法二:
#include
#include
voidmain()
{intf(intx);
inta,b,n=0;
for(a=3;a<6744/2;a=a+2)
if(f(a))
{b=6744-a;
if(f(b))
n++;}
printf("%d\n",n);
}
intf(intx)