Advertisement
czaffik

Spirala Ulama

Jan 14th, 2023 (edited)
2,602
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
QML 2.42 KB | Science | 0 0
  1. // main.qml
  2. import QtQuick 2.9
  3. import QtQuick.Window 2.2
  4.  
  5. Window {
  6.     id: mainwindow
  7.     visible: true
  8.     width: 1200
  9.     height: 1000
  10.     title: qsTr("Hello World")
  11.     property variant punkty: [];
  12.  
  13.     Component.onCompleted: {
  14.         spirala()
  15.     }
  16.  
  17.     function isPrime(n) {
  18.         var sn = Math.sqrt(n);
  19.         for (var i = 2; i <= sn; i++) {
  20.             if (!(n%i)) return false;
  21.         }
  22.         return true;
  23.     }
  24.  
  25.     function liczbaPol(n) {
  26.         var res = 9;
  27.         var tmp = 16;
  28.         for (var i = 2; i <= n; i++) {
  29.             res += tmp;
  30.             tmp += 8;
  31.         }
  32.  
  33.         return res;
  34.     }
  35.  
  36.     function spirala() {
  37.         var x = 590;
  38.         var y = 490;
  39.  
  40.         var ds = 20;
  41.         var dx = 1;
  42.         var dy = -1;
  43.  
  44.         var mx = true;
  45.         var su = 0;
  46.         var m = 1;
  47.         var kl = 2, ki = 0, km = 0;
  48.         var suma = 1;
  49.         var lp = liczbaPol(20);
  50.         var cp = 1, clp = 0;
  51.  
  52.         for (var j = 1, k = 0; j <= lp; j++) {
  53.             punkty.push(Qt.createQmlObject('Rect { x: ' + x + '; y: ' + y + '; number: ' + j + ' }', mainwindow));
  54.  
  55.             if (ki >= kl) {
  56.                 cp++;
  57.                 if (isPrime(j)) {
  58.                     punkty[j-1].textColor = "red";
  59.                     clp++;
  60.                 }
  61.  
  62.                 suma += j;
  63.                 ki = 0;
  64.                 km++;
  65.             }
  66.             ki++;
  67.  
  68.             if (km >= 4) {
  69.                 kl += 2;
  70.                 km = 0;
  71.             }
  72.  
  73.             if (mx) x += dx*ds;
  74.             else y += dy*ds;
  75.             k++;
  76.             if (k == m) {
  77.                 mx = !mx;
  78.                 su++;
  79.                 k = 0;
  80.             }
  81.             if (su == 2) {
  82.                 m++;
  83.                 dx *= -1;
  84.                 dy *= -1;
  85.                 su = 0;
  86.             }
  87.         }
  88.  
  89.         console.log(clp, '/', cp, ' ', Math.round((clp/cp)*100), '%');
  90.     }
  91. }
  92.  
  93. // Rect.qml
  94. import QtQuick 2.0
  95.  
  96. Rectangle {
  97.     id: root
  98.  
  99.     property int number
  100.     property color borderColor: "transparent"
  101.     property color textColor: "black"
  102.     property int size: 20
  103.  
  104.     width: size;
  105.     height: size;
  106.     border.width: 1;
  107.     border.color: borderColor;
  108.     color: "transparent";
  109.  
  110.     Text {
  111.         font.pointSize: 5
  112.         color: textColor
  113.         x: root.width/2 - width/2
  114.         y: root.height/2 - height/2
  115.         text: number
  116.     }
  117. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement