027 斐波那契数列
斐波那契(Fibonacci)数列的特点:第1个和第2个数都为1,从第3个数开始,该数是前两个数之和,求这个数列的前30个元素,
在数学上,斐波那契数列是以递归的方法来定义:
将F的下标看成数组下标
#include<stdio.h>
#include<math.h>
#include<time.h>
#include<stdlib.h>
main()
{
long f[100];
int i;
f[0] = 0;
f[1] = 1;
f[2] = 1;
for(i = 3; i <= 30; i++) //从第3项开始,每项等于前2项之和
{
f[ i ] = f[i - 1] + f[i - 2];
}
for(i = 0;i <= 30; i++)
{
printf("%10ld", f[i]);
if(i % 5 == 0) //每5个元素进行一次换行
{
printf("\n");
}
}
}
028 哥德巴赫猜想
验证100以内的正偶数都能分解为2个素数之和,即验证哥德巴赫猜想对100以内(大于2)的正偶数成立。
如:
将一个偶数用2个素数之和表示的方法,等于同一横线上,蓝色和红色的交点数。
#include<stdio.h>
#include<math.h>
#include<time.h>
#include<stdlib.h>
int ss(int i)
{
int j;
if(i <= 1) //小于1的数不是素数
{
return 0;
}
if(i == 2) //2是素数
{
return 1;
}
for(j = 2; j < i; j++) //对大于2的数进行判断,素数:除了一和他本身
{
if(i % j == 0)
{
return 0;
}
else if(i != j + 1)
{
continue;
}
else
{
return 1;
}
}
}
main()
{
int i, j, k, flag1, flag2, n = 0;
for(i = 4; i < 100; i += 2)
{
for(k = 2; k <= i / 2; k++)
{
j = i - k;
flag1 = ss(k); //判断拆分出的数是否是素数
if(flag1)
{
flag2 = ss(j);
if(flag2) //是素数拆分
{
printf("%3d = %3d + %3d,", i, k, j);
n++;
if(n % 5 == 0)
{
printf("\n");
}
}
}
}
}
printf("\n");
}
- 要将正偶数分解为2部分,再对这两部分进行判断,如果均是素数则满足题意,不是则重新判断
029 尼科彻斯定理
尼科彻斯定理: 任何一个整数的立方都可以写成一串连续奇数和,用编程验证该定理,如:输入5,运行结果:
#include<stdio.h>
#include<math.h>
#include<time.h>
#include<stdlib.h>
main()
{
int i, j, k = 0, l, n, m, sum, flag = 1;
printf("请输入一个数:\n");
scanf("%d", &n);
m = n * n * n; //计算输入值的立方
i = m / 2 ; //立方值得一半
if(i % 2 == 0) //为偶数加一
{
i = i + 1;
}
while(flag == 1 && i >=1) //当i大于等于1且flag=1时执行该语句
{
sum = 0;
k = 0;
while(1)
{
sum += (i - 2 * k); //奇数累加求和
k++; //输出值判断
if(sum == m) //sum 和m相等,输出累加过程
{
printf("%d * %d * %d = ", n, n, n, m);
for(l = 0; l < k-1; l++)
{
printf("%d + ", i - l *2);
}
printf("%d\n", i - (k - 1) * 2);
flag = 0;
break;
}
if(sum > m) //超过退出重新计算
{
break;
}
}
i -= 2; //使初始值减小
}
printf("\n");
}
- 先确定这串连续奇数的最大值,可以这样子分析,任何立方值(sum)的一半(x),如果是奇数,则x + x + 2 的值一定大于sum,那这串连续奇数的最大值不会超过x; 如果x是偶数,则需把它变成奇数,那么变成奇数加1,——因为x + 1 + x - 1正好等于sum,所以当x是偶数时,这串连续奇数的最大值不会超过x + 1,在确定范围后,就可以从最大值开始穷举。
参考:
哥德巴赫猜想:https://blog.csdn.net/bjweimengshu/article/details/103776026