藍橋杯 2023年第四屆真題 幸運數

2021-10-08 18:07:36 字數 1401 閱讀 8960

幸運數是波蘭數學家烏拉姆命名的。它採用與生成素數類似的「篩法」生成

。首先從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 我們沿著圖中的星號線剪開...