C语言 计算2000年到3000年中有多少个日期之和为素数
来源:学生作业帮 编辑:作业帮 分类:综合作业 时间:2024/10/06 16:08:29
C语言 计算2000年到3000年中有多少个日期之和为素数
如2000年1月1日日期之和为4 不是素数
如2000年1月1日日期之和为4 不是素数
思路
对于年月日进行循环,对于每天算各位数字之和,判断是否是素数
由于素数判断次数比较多,需要判断1001*365=365414次,加上闰年的天数还要多一些,所以采用素数筛,而不是除法进行素数判断,从而增加效率
程序代码如下
#include
char prime_table[50];
void create_table()
{
int i, j;
for(i = 2; i < 50; i ++)
{
if(prime_table[i]) continue;
for(j = i*2; j < 50; j += i)
prime_table[j] = 1;
}
}
int is_prime(int i)
{
return !prime_table[i];
}
int day_of_month(int y, int m)
{
int m_table[12] = {31, 28, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31};
if(m != 2) return m_table[m-1];
if((y%4==0&&y%100!=0)||y%400==0) return 29;
return 28;
}
int main()
{
int y, m, d, cnt = 0, dom;
create_table();
for(y = 2000; y
对于年月日进行循环,对于每天算各位数字之和,判断是否是素数
由于素数判断次数比较多,需要判断1001*365=365414次,加上闰年的天数还要多一些,所以采用素数筛,而不是除法进行素数判断,从而增加效率
程序代码如下
#include
char prime_table[50];
void create_table()
{
int i, j;
for(i = 2; i < 50; i ++)
{
if(prime_table[i]) continue;
for(j = i*2; j < 50; j += i)
prime_table[j] = 1;
}
}
int is_prime(int i)
{
return !prime_table[i];
}
int day_of_month(int y, int m)
{
int m_table[12] = {31, 28, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31};
if(m != 2) return m_table[m-1];
if((y%4==0&&y%100!=0)||y%400==0) return 29;
return 28;
}
int main()
{
int y, m, d, cnt = 0, dom;
create_table();
for(y = 2000; y
C语言 计算2000年到3000年中有多少个日期之和为素数
c语言,计算并输出3到n之间所有素数的平方根之和
简单C语言编程:计算100到10000间有多少个数,其个位数之和为35.
判断101-200之间有多少个素数,并输出所有素数 用c语言求解
用C语言,判断1-100之间有多少个素数,并输出所有素数.
计算并输出3到100(包括3和100)之间所有素数之和的平方根.C语言,求救
用C编程 求输出1000到2000内的素数,每行输出5个数;并计算所有素数之和
C语言:验证哥德巴赫猜想:任何一个大于6的偶数均可表示为2个素数之和
用VF语言计算1到100这之间素数之和
关于C语言的 设计一个fun函数 目的是计算从3 开始到 你的所有素数的平方根之和.
求a 到b之间的素数之和,C语言,我想知道我哪里错了.
C语言编程求解1到n之间所有素数之和