幸運數是波蘭數學家烏拉姆命名的。它採用與生成素數類似的「篩法」生成
。首先從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, …
輸入兩個正整數m n, 用空格分開 (m < n < 1000*1000)
程式輸出 位於m和n之間的幸運數的個數(不包含m和n)。
30 69
#include
#include
int a[
1000050
],n,m,i,j,cou=
0,c=0;
intmain()
a[1]=
1;for(i=
2;i<=n&&a[i-1]
<=n;i++
)//直接使用計數,a[2]=2時,所有的偶數都沒有了
a[i]
=a[i-1]
+2;for
(i=2
;i<=n;i++
)//假設比那裡所有a[i],每個都當一次幸運數字,且不為0
for(j=i;j<=n;j++
)//找出第乙個為0 的位置
}// printf("%d\n",c);
j=c;
while
(j<=n)
//將後面不為0的數字移到前面來
// printf("%d\n",j);
/* for(j=1;j<=n;j++)
printf("%d ",a[j]);
printf("\n ");
return 0;*/
if(i>n)
break;}
/*for(j=1;j<=n;j++)
if(a[j]!=0)
printf(" %d ",a[j]);
printf("\n ");*/
for(j=
1;j<=n;j++
)//統計個數
if(a[j]
>m&&a[j]
) cou++
;printf
("%d"
,cou)
;}
藍橋杯 2023年第四屆真題 幸運數
題目描述 幸運數是波蘭數學家烏拉姆命名的。它採用與生成素數類似的 篩法 生成 首先從1開始寫出自然數1,2,3,4,5,6,1 就是第乙個幸運數。我們從2這個數開始。把所有序號能被2整除的項刪除,變為 1 3 5 7 9 把它們縮緊,重新記序,為 1 3 5 7 9 這時,3為第2個幸運數,然後把所...
藍橋杯 2023年第四屆真題 幸運數
幸運數是波蘭數學家烏拉姆命名的。它採用與生成素數類似的 篩法 生成 首先從1開始寫出自然數1,2,3,4,5,6,1 就是第乙個幸運數。我們從2這個數開始。把所有序號能被2整除的項刪除,變為 1 3 5 7 9 把它們縮緊,重新記序,為 1 3 5 7 9 這時,3為第2個幸運數,然後把所有能被3整...
藍橋杯2023年第四屆真題剪格仔
問題 1432 藍橋杯 2013年第四屆真題 剪格仔 時間限制 1sec 記憶體限制 128mb 題目描述 歷屆試題 剪格仔 時間限制 1.0s 記憶體限制 256.0mb 問題描述 如下圖所示,3 x 3 的格仔中填寫了一些整數。10 1 52 20 30 1 1 2 3 我們沿著圖中的星號線剪開...