随机函数 歌德巴赫猜想
来源:互联网 发布:生活中耐看的女生知乎 编辑:程序博客网 时间:2024/05/02 05:03
1.随机函数
每次运行产生不同的随机数,程序代码如下:
#include <stdlib.h>
#include <stdio.h>
#include <time.h>
int main(void)
{
int i;
time_t t;
srand((unsigned) time(&t));
printf("Ten random numbers from 0 to 99/n/n");
for (i=0;i<10;i++)
printf("%d/n",rand()%100);
return 0;
}
这时运行程序,会发现每次产生的随机数都不一样。
那么为什么第一个程序一样而第二个程序不一样呢?
第二个程序用到了一个新的函数srand,这个函数是给随机数产生一个随机种子(seed),函数原型是srand( (unsigned) time(NULL));
time的值每时每刻都不同。所以种子不同,所以,产生的随机数也不同。
所以说,要想产生不同的随机数,在使用rand之前需要先调用srand
由于rand产生的随机数从0到rand_max,而rand_max是一个很大的数,那么如何产生从X~Y的数呢?
从X到Y,有Y-X+1个数,所以要产生从X到Y的数,只需要这样写:
k=rand()%(Y-X+1)+X;
这样,就可以产生你想要的任何范围内的随机数了。
2.歌德巴赫猜想
实例介绍:编写程序,验证歌德巴赫猜想,任意大偶数为两个素数之和并输出这两个素数。(所谓大偶数是指从6开始的偶数)
程序代码:
#include <stdlib.h>
#include <stdio.h>
#include <time.h>
void even(int num);
int prime(int num);
int main(void)
{
int num;
printf("Please input a number(>=6)");
scanf("%d",&num);
if(num>6 && num%2==0)
{
even(num);
printf("/n");
}
else
printf("The %d isn't even number./n",num);
}
void even(int num)
{
int i;
for(i=2;i<num/2;i++)
if(prime(i) && prime(num-i))
printf("%d+%d=%d ",i,num-i,num);
}
int prime(int num)
{
int i,k=num/2;
for(i=2;i<=k;i++)
if(num%i==0)
return 0;
return 1;
}
3.求整数n的全部素数因子
实例介绍:输出整数n的所有素数因子
程序代码:
#include <stdlib.h>
#include <stdio.h>
#include <time.h>
void factor(int num);
int prime(int num);
int main(void)
{
int num;
printf("Please input a number:");
scanf("%d",&num);
factor(num);
}
void factor(int num)
{
int i=2;
while(i<num)
{
if(num%i==0 && prime(i))
{
printf("%d ",i);
num=num/i;
continue;
}
i++;
}
}
int prime(int num)
{
int i,k=num/2;
for(i=2;i<=k;i++)
if(num%i==0)
return 0;
return 1;
}
4.求1-1000内的阶乘和数
实例介绍:一个正整数如果等于组成它的各位数字的阶乘之和,改整数被称为阶乘和数。例如:145=1!+4!+5!,则145是一个三位阶乘和数,统计所有的3位以内的阶乘和数。
程序代码:
#include <stdlib.h>
#include <stdio.h>
long jc(int num);
int main(void)
{
int a,b,c;
long m1,m2,n1,n2;
printf("The result is:");
for(a=1;a<=9;a++)
{
if(a==jc(a))
printf("%d ",a);
for(b=1;b<=9;b++)
{
m1=a*10+b;
n1=jc(a)+jc(b);
if(m1==n1)
printf("%ld ",m1);
for(c=1;c<=9;c++)
{
m2=m1*10+c;
n2=n1+jc(c);
if(m2==n2)
printf("%ld ",m2);
}
}
}
printf("/n");
}
long jc(int num)
{
int i;
long p=1;
for(i=1;i<=num;i++)
p=p*i;
return p;
}
- 随机函数 歌德巴赫猜想
- 练习 歌德巴赫猜想
- 歌德巴赫猜想
- 歌德巴赫猜想
- 歌德巴赫猜想
- 验证歌德巴赫猜想
- 验证歌德巴赫猜想
- 歌德巴赫猜想
- 验证歌德巴赫猜想
- 二重歌德巴赫猜想
- java歌德巴赫猜想
- 歌德巴赫猜想程序验证
- 歌德巴赫猜想的算法
- 歌德巴赫猜想的证明
- 歌德巴赫猜想的证明
- 【HUSTOJ】1099: 歌德巴赫猜想
- hihoCoder #1493 : 歌德巴赫猜想
- 练习:验证歌德巴赫猜想
- 向本进程窗口中的ListView窗口发送NM_DBLCLK通知(SDK代码)
- Iphone UITableView 创建最简单的表格
- struts2 中 s:text 的使用 资源的访问 多语言实现
- 关于View in Browser
- Java报表制作(iReport+jaserReport+jFreeChart)
- 随机函数 歌德巴赫猜想
- $.get $.post $.getJSON 详解
- JQuery 制作的一款在线编辑器(xheditor)。兼容IE,Firefox...感觉不错
- Oracle TRIM函数
- linux下字符集编码转换轻松实现
- Ogitor
- linux下字符集编码转换轻松实现
- 利用Oracle的row_number() over函数消除重复的记录
- 软件需求的3个层次