#include <vector>
#include <iostream>
#include <string>
using namespace std;
//ウラムの螺旋をテキストで出力します
//Ulam's Spiral
//Spiral of Ulam
int main()
{
//ここを変えて違う大きさのを生成
//wとhは奇数、さらに同じでなければダメ
int w=41,h=41;
vector<string> AA(h,string(w,' '));
vector<bool> isPrime(w*h+1,true);
isPrime[0]=false;
isPrime[1]=false;
for(int x=0;x<isPrime.size();x++){
if(isPrime[x]){
for(int y=x+x;y<isPrime.size();y+=x){
isPrime[y]=false;
}
}
}
int x=w/2,y=h/2;
int mukiX=1,mukiY=0,step=0,maxStep=1,num=0;
for(int i=1;i<w*h+1;i++){
if(isPrime[i])AA[y][x]='*';
x+=mukiX;
y+=mukiY;
step++;
if(!(step<maxStep)){
step=0;
num++;
if(mukiX==1){mukiX=0;mukiY=-1;}
else if(mukiY==-1){mukiX=-1;mukiY=0;}
else if(mukiX==-1){mukiX=0;mukiY=1;}
else if(mukiY==1){mukiX=1;mukiY=0;}
if(!(num<2)){
num=0;
maxStep++;
}
}
}
for(auto line:AA){
cout << line << endl;
}
return 0;
}
I2luY2x1ZGUgPHZlY3Rvcj4KI2luY2x1ZGUgPGlvc3RyZWFtPgojaW5jbHVkZSA8c3RyaW5nPgoKdXNpbmcgbmFtZXNwYWNlIHN0ZDsKCi8v44Km44Op44Og44Gu6J665peL44KS44OG44Kt44K544OI44Gn5Ye65Yqb44GX44G+44GZCi8vVWxhbSdzIFNwaXJhbAovL1NwaXJhbCBvZiBVbGFtCmludCBtYWluKCkKewoJLy/jgZPjgZPjgpLlpInjgYjjgabpgZXjgYblpKfjgY3jgZXjga7jgpLnlJ/miJAKCS8vd+OBqGjjga/lpYfmlbDjgIHjgZXjgonjgavlkIzjgZjjgafjgarjgZHjgozjgbDjg4Djg6EKCWludCB3PTQxLGg9NDE7Cgl2ZWN0b3I8c3RyaW5nPiBBQShoLHN0cmluZyh3LCcgJykpOwoJdmVjdG9yPGJvb2w+IGlzUHJpbWUodypoKzEsdHJ1ZSk7Cglpc1ByaW1lWzBdPWZhbHNlOwoJaXNQcmltZVsxXT1mYWxzZTsKCWZvcihpbnQgeD0wO3g8aXNQcmltZS5zaXplKCk7eCsrKXsKCQlpZihpc1ByaW1lW3hdKXsKCQkJZm9yKGludCB5PXgreDt5PGlzUHJpbWUuc2l6ZSgpO3krPXgpewoJCQkJaXNQcmltZVt5XT1mYWxzZTsKCQkJfQoJCX0KCX0KCWludCB4PXcvMix5PWgvMjsKCWludCBtdWtpWD0xLG11a2lZPTAsc3RlcD0wLG1heFN0ZXA9MSxudW09MDsKCWZvcihpbnQgaT0xO2k8dypoKzE7aSsrKXsKCQlpZihpc1ByaW1lW2ldKUFBW3ldW3hdPScqJzsKCQl4Kz1tdWtpWDsKCQl5Kz1tdWtpWTsKCQlzdGVwKys7CgkJaWYoIShzdGVwPG1heFN0ZXApKXsKCQkJc3RlcD0wOwoJCQludW0rKzsKCQkJaWYobXVraVg9PTEpe211a2lYPTA7bXVraVk9LTE7fQoJCQllbHNlIGlmKG11a2lZPT0tMSl7bXVraVg9LTE7bXVraVk9MDt9CgkJCWVsc2UgaWYobXVraVg9PS0xKXttdWtpWD0wO211a2lZPTE7fQoJCQllbHNlIGlmKG11a2lZPT0xKXttdWtpWD0xO211a2lZPTA7fQoJCQlpZighKG51bTwyKSl7CgkJCQludW09MDsKCQkJCW1heFN0ZXArKzsKCQkJfQoJCX0KCX0KCWZvcihhdXRvIGxpbmU6QUEpewoJCWNvdXQgPDwgbGluZSA8PCBlbmRsOwoJfQoJcmV0dXJuIDA7Cn0=