版权声明:转载请注明出处 https://blog.csdn.net/nanhuaibeian/article/details/88834209
- 题目:一个整数,它加上100后是一个完全平方数,再加上168又是一个完全平方数,请问该数是多少?
程序分析:
假设该数为 x。
1、则:x + 100 = n2, x + 100 + 168 = m2
2、计算等式:m2 - n2 = (m + n)(m - n) = 168
3、设置: m + n = i,m - n = j,i * j =168,i 和 j 至少一个是偶数
4、可得: m = (i + j) / 2, n = (i - j) / 2,i 和 j 要么都是偶数,要么都是奇数。
5、从 3 和 4 推导可知道,i 与 j 均是大于等于 2 的偶数。
6、由于 i * j = 168, j>=2,则 1 < i < 168 / 2 + 1。
7、接下来将 i 的所有数字循环计算即可。
#include "stdio.h"
void main(){
int i,j,m,n,x;
for(i=1;i<168/2+1;i++){
if(168%i==0){
j=168/i;
if(i>j&&(i+j)%2==0&&(i-j)%2==0){
m=(i+j)/2;
n=(i-j)/2;
x=n*n-100;
printf("%d+100=%d*%d\n",x,n,n);
printf("%d+268=%d*%d\n",x,m,m);
}
}
}
}
- 输入某年某月某日,判断这一天是这一年的第几天?
#include "stdio.h"
void main(){
int year=2015,month=10,day=1,flag=0,sum=0,i;
int m[12]={31,28,31,30,31,30,31,31,30,31,30,31};
if((year%4==0&&year%100!=0)||year%400==0){
flag=1;
}
// scanf("%d,%d,%d",&year,&month,&day);
for(i=0;i<month-1;i++){
sum=sum+m[i];
}
printf("%d\n",sum);
if(month>2) sum=sum+flag;
printf("%d",sum+day);
}
- 古典问题(兔子生崽):有一对兔子,从出生后第3个月起每个月都生一对兔子,
小兔子长到第三个月后每个月又生一对兔子,假如兔子都不死,问每个月的兔子总数为多少?(输出前40个月即可)
写出几个月之后找规律
#include "stdio.h"
void main(){
int a[40];
a[0]=1;
a[1]=1;
int i;
for(i=2;i<40;i++){
a[i]=a[i-1]+a[i-2];
}
for(i=0;i<40;i++)
printf("%d\n",a[i]);
}
- 将一个正整数分解质因数。例如:输入90,打印出90=233*5。
#include "stdio.h"
#include "math.h"
void main(){
int n=90;
// scanf("%d",&n);
int temp=n;
int a[n],b[n];
int i,k=0,j,flag;
for(i=2;i<=n;i++){
flag=1;
for(j=2;j<=sqrt(i);j++){
if(i%j==0) flag=0;
}
if(flag) a[k++]=i;
}
i=0;
while(temp!=1){
for(j=0;j<k;j++){
if(temp%a[j]==0)break;
}
b[i++]=a[j];
temp=temp/a[j];
}
for(j=0;j<i;j++)
printf("%d ",b[j]);
}
- 求s=a+aa+aaa+aaaa+aa…a的值,其中a是一个数字。例如2+22+222+2222+22222(此时共有5个数相加),几个数相加有键盘控制
#include "stdio.h"
#include "math.h"
void main(){
int a=2,n=5;
int i,j,sum=0,temp,num;
// scanf("%d",&n);
for(i=1;i<=n;i++){
num=0;
for(j=1;j<=i;j++){
temp=a*pow(10,j-1);
num=num+temp;
}
printf("%d\n",num);
sum=sum+num;
}
printf("%d",sum);
}
- 一个数如果恰好等于它的因子之和,这个数就称为"完数"。例如6=1+2+3.编程找出1000以内的所有完数。
这里的因子,指的是所有的因子比如:28=1+2+4+7+14
#include "stdio.h"
void main(){
int i,j,k,sum;
// int a[1000];
for(i=2;i<=1000;i++){
sum=0;
int a[1000]={0};
// memset(a,0,sizeof(a));
k=0;
a[k++]=1;
for(j=2;j<=i/2;j++){
if(i%j==0) a[k++]=j;
}
for(j=0;j<k;j++){
sum=sum+a[j];
}
if(sum==i){
printf("%d ",i);
for(j=0;j<k;j++) printf("%d ",a[j]);
printf("\n");
}
}
}