Data update
This commit is contained in:
parent
5af6d93694
commit
796d366b97
455 changed files with 7413 additions and 1900 deletions
44
Task/Circular-primes/EasyLang/circular-primes.easy
Normal file
44
Task/Circular-primes/EasyLang/circular-primes.easy
Normal file
|
|
@ -0,0 +1,44 @@
|
|||
fastfunc prime n .
|
||||
if n mod 2 = 0 and n > 2
|
||||
return 0
|
||||
.
|
||||
i = 3
|
||||
sq = sqrt n
|
||||
while i <= sq
|
||||
if n mod i = 0
|
||||
return 0
|
||||
.
|
||||
i += 2
|
||||
.
|
||||
return 1
|
||||
.
|
||||
func cycle n .
|
||||
m = n
|
||||
p = 1
|
||||
while m >= 10
|
||||
p *= 10
|
||||
m = m div 10
|
||||
.
|
||||
return m + n mod p * 10
|
||||
.
|
||||
func circprime p .
|
||||
if prime p = 0
|
||||
return 0
|
||||
.
|
||||
p2 = cycle p
|
||||
while p2 <> p
|
||||
if p2 < p or prime p2 = 0
|
||||
return 0
|
||||
.
|
||||
p2 = cycle p2
|
||||
.
|
||||
return 1
|
||||
.
|
||||
p = 2
|
||||
while count < 19
|
||||
if circprime p = 1
|
||||
print p
|
||||
count += 1
|
||||
.
|
||||
p += 1
|
||||
.
|
||||
|
|
@ -1,15 +1,18 @@
|
|||
const std = @import("std");
|
||||
const math = std.math;
|
||||
const heap = std.heap;
|
||||
const stdout = std.io.getStdOut().writer();
|
||||
|
||||
pub fn main() !void {
|
||||
var arena = heap.ArenaAllocator.init(heap.page_allocator);
|
||||
defer arena.deinit();
|
||||
|
||||
var candidates = std.PriorityQueue(u32).init(&arena.allocator, u32cmp);
|
||||
const allocator = arena.allocator();
|
||||
|
||||
var candidates = std.PriorityQueue(u32, void, u32cmp).init(allocator, {});
|
||||
defer candidates.deinit();
|
||||
|
||||
const stdout = std.io.getStdOut().writer();
|
||||
|
||||
try stdout.print("The circular primes are:\n", .{});
|
||||
try stdout.print("{:10}" ** 4, .{ 2, 3, 5, 7 });
|
||||
|
||||
|
|
@ -33,19 +36,19 @@ pub fn main() !void {
|
|||
try stdout.print("\n", .{});
|
||||
}
|
||||
|
||||
fn u32cmp(a: u32, b: u32) math.Order {
|
||||
fn u32cmp(_: void, a: u32, b: u32) math.Order {
|
||||
return math.order(a, b);
|
||||
}
|
||||
|
||||
fn circular(n0: u32) bool {
|
||||
if (!isprime(n0))
|
||||
if (!isPrime(n0))
|
||||
return false
|
||||
else {
|
||||
var n = n0;
|
||||
var d = @floatToInt(u32, @log10(@intToFloat(f32, n)));
|
||||
var d: u32 = @intFromFloat(@log10(@as(f32, @floatFromInt(n))));
|
||||
return while (d > 0) : (d -= 1) {
|
||||
n = rotate(n);
|
||||
if (n < n0 or !isprime(n))
|
||||
if (n < n0 or !isPrime(n))
|
||||
break false;
|
||||
} else true;
|
||||
}
|
||||
|
|
@ -55,13 +58,13 @@ fn rotate(n: u32) u32 {
|
|||
if (n == 0)
|
||||
return 0
|
||||
else {
|
||||
const d = @floatToInt(u32, @log10(@intToFloat(f32, n))); // digit count - 1
|
||||
const d: u32 = @intFromFloat(@log10(@as(f32, @floatFromInt(n)))); // digit count - 1
|
||||
const m = math.pow(u32, 10, d);
|
||||
return (n % m) * 10 + n / m;
|
||||
}
|
||||
}
|
||||
|
||||
fn isprime(n: u32) bool {
|
||||
fn isPrime(n: u32) bool {
|
||||
if (n < 2)
|
||||
return false;
|
||||
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue