看程序写结果的题。。
#include<stdio.h>
#include<iostream>
#include<math.h>
using namespace std;
int main(){
int i,k,n;
int x[501],w[501];
scanf("%d",&n);
for(i=1;i<=n;i++){x[i]=0;w[i]=1;}
for(i=2;i<=(int)sqrt(n)+1;i++)
if(x[i]==0){
k=i*i;
while(k<=n){x[k]=i;k+=i;}
}
for(i=n;i>=1;i--)
if(x[i]!=0){
w[x[i]]=w[x[i]]+w[i];
w[i/x[i]]=w[i/x[i]]+w[i];
w[i]=0;
}
printf("x:\n\n\n");
for(i=1;i<=n;i++)printf("%d %d\n",i,x[i]);
printf("w:\n\n\n");
for(i=1;i<=n;i++)printf("%d %d\n",i,w[i]);
return 0;
}
输入:290
#include<stdio.h>
#include<iostream>
#include<math.h>
using namespace std;
int main(){
int i,k,n;
int x[501],w[501];
scanf("%d",&n);
for(i=1;i<=n;i++){x[i]=0;w[i]=1;}
for(i=2;i<=(int)sqrt(n)+1;i++)
if(x[i]==0){
k=i*i;
while(k<=n){x[k]=i;k+=i;}
}
for(i=n;i>=1;i--)
if(x[i]!=0){
w[x[i]]=w[x[i]]+w[i];
w[i/x[i]]=w[i/x[i]]+w[i];
w[i]=0;
}
printf("x:\n\n\n");
for(i=1;i<=n;i++)printf("%d %d\n",i,x[i]);
printf("w:\n\n\n");
for(i=1;i<=n;i++)printf("%d %d\n",i,w[i]);
return 0;
}
输入:290