幸运数C语言编程实验,幸运数,c语言幸运数,算法比赛题

首先先描述题目spa

标题:幸运数

幸运数是波兰数学家乌拉姆命名的。它采用与生成素数相似的“筛法”生成。

首先从1开始写出天然数1,2,3,4,5,6,....

1 就是第一个幸运数。

咱们从2这个数开始。把全部序号能被2整除的项删除,变为:

1 _ 3 _ 5 _ 7 _ 9 ....

把它们缩紧,从新记序,为:

1 3 5 7 9 .... 。这时,3为第2个幸运数,而后把全部能被3整除的序号位置的数删去。注意,是序号位置,不是那个数自己可否被3整除!! 删除的应该是5,11, 17, ...

此时7为第3个幸运数,而后再删去序号位置能被7整除的(19,39,...)

最后剩下的序列相似:

1, 3, 7, 9, 13, 15, 21, 25, 31, 33, 37, 43, 49, 51, 63, 67, 69, 73, 75, 79, ...

code

我这里写的代码 没有遵照题目要求 , 而是把全部的 1-n 之间的幸运数输出并计算个数blog

1 不算幸运数input

就这个题而言 咱们能够运用筛选法的原理 也就是素数打表的思想 来解决数学

若是序号能够整除的话 就让对应的位置赋值为0  而后下次循环 进行筛选不为0 的下一项string

下面的源代码io

/*

幸运数

*/

#include

#include

const int N=1000;

int a[N];

int n,m;

void input()

{

for(int i=1;i<=n;i++)

a[i]=i;

}

void output()

{

int i,ans=0;

for(i=m;i

if(a[i]){

printf("%d ",a[i]);

if(i==1) continue;

ans++;

}

printf("\n");

printf("%d\n",ans);

}

void Luckly_Num()

{

int i,j,k,cout,temp,sum=1;

for(i=2;i<=n;i++)

{

if(!a[i])

continue;

//for(k=i;a[k]==0;k++)

// sum++;

temp=a[i];

for(j=1,cout=0;j<=n;j++)

{

if(a[j])

{

cout++;

if(cout%temp==0)

{

a[j]=0;

}

}

}

}

}

int main()

{

int i,j;

while(scanf("%d %d",&m,&n))

{

input();//³õʼ»¯

Luckly_Num(); //ºËÐÄ

output();// Êä³ö

}

}

我这里把整个运行步骤给输出出来了:

c40ba391c64f3bf863a64578c619ca67.pngclass

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值