- #include<stdio.h>
- #include<stdlib.h>
- #include<math.h>
- struct node{
- int no;
- struct node *next;
- };
- int prime[5000],nprime;
- int main(){
- int i,j;
- int sq;
- int check;
- int n;
- int cut,count;
- struct node *member,*ptr,*current;
- prime[0]=2;
- nprime=1;
- for(i=3;nprime<=3502;i+=2){
- check=1;
- for(j=3;j<=sq;j+=2){
- if(i%j==0){
- check=0;
- break;
- }
- }
- if(check==1){
- prime[nprime++]=i;
- }
- }
- while(1){
- if(n==0)break;
- member->no=1;
- member->next=NULL;
- current=member;
- for(i=2;i<=n;i++){
- current->next=ptr;
- ptr->no=i;
- ptr->next=NULL;
- current=ptr;
- }
- current->next=member;
- /*current=member;*/
- count=0;
- while(n>1){
- cut=prime[count++];
- /*if(count==1)cut--;*/
- cut = (cut-1) % n + 1;
- /*printf("(%d)",cut);*/
- while(cut--){
- ptr=current;
- current=current->next;
- }
- /*printf("[%d]\n",current->no);*/
- ptr->next=current->next;
- /*free(current);*/
- current=ptr;
- n--;
- }
- }
- return 0;
- }
Raw Paste