BASIC 256
素数の日
西暦年を入力すれば、その年の素数日 (たとえば、20191231 ... ) をすべて出力するコードを書く。
動けばいいコード。
Function isPrime(n)
If n < 2 Then Return False
If n = 2 Then Return True
If n % 2 = 0 Then Return False
limit = Int(Sqr(n))
For i = 3 To limit Step 2
If n % i = 0 Then Return False
Next i
Return True
End Function
Function leapyear(Y)
If (Y % 4) <> 0 Then Return False
If (Y % 100) = 0 And (Y % 400) <> 0 Then Return False
Return True
End Function
input "y= ",y
yy=10000*y
If leapyear(y) Then dd=29 Else dd=28
For i = yy+0101 To yy+0131
If isPrime(i) Then
Print String(i); " ";
End If
Next i
print
For i = yy+0201 To yy+0200+dd
If isPrime(i) Then
Print String(i); " ";
End If
Next i
print
For i = yy+0301 To yy+0331
If isPrime(i) Then
Print String(i); " ";
End If
Next i
print
For i = yy+0401 To yy+0430
If isPrime(i) Then
Print String(i); " ";
End If
Next i
print
For i = yy+0501 To yy+0531
If isPrime(i) Then
Print String(i); " ";
End If
Next i
print
For i = yy+0601 To yy+0630
If isPrime(i) Then
Print String(i); " ";
End If
Next i
print
For i = yy+0701 To yy+0731
If isPrime(i) Then
Print String(i); " ";
End If
Next i
print
For i = yy+0801 To yy+0831
If isPrime(i) Then
Print String(i); " ";
End If
Next i
print
For i = yy+0901 To yy+0930
If isPrime(i) Then
Print String(i); " ";
End If
Next i
print
For i = yy+1001 To yy+1031
If isPrime(i) Then
Print String(i); " ";
End If
Next i
print
For i = yy+1101 To yy+1130
If isPrime(i) Then
Print String(i); " ";
End If
Next i
print
For i = yy+1201 To yy+1231
If isPrime(i) Then
Print String(i); " ";
End If
Next i
end
2019年
y= 2019
20190221 20190227
20190301 20190319 20190323
20190421
20190523 20190529
20190601 20190613
20190719
20190811 20190823
20190913
20191009 20191027
20191109 20191117
20191231
2020年
y= 2020
20200109 20200111 20200121 20200123
20200223
20200309
20200429
20200511 20200529
20200613 20200619
20200703 20200711 20200721 20200723 20200729
20200801 20200813
20200903
20201021 20201029
20201101 20201113
20201227 20201231
素数日 が無い月の年もあった。
y= 2001
20010127
20010209 20010217 20010223
20010307 20010313 20010323
20010409
20010517
20010701 20010721
20010811
20010917 20010929
20011001 20011007 20011031