1 条题解

  • 0
    @ 2025-4-14 18:43:48

    C :

    #include<stdio.h>
    void main()
    {
    	short t,a,b,i,j,k,x[8];
    	scanf("%d",&t);
    	for(t;t>0;t--)
    	{
    		scanf("%d",&i);
    		for(b=4;b<=i;b++)
    		{
    			k=0;a=b;
    			while(a%2==0){
    				x[k++]=2;
    				a=a/2;}
    			while(a%3==0){
    				x[k++]=3;
    				a=a/3;}
    			while(a%5==0){
    				x[k++]=5;
    				a=a/5;}
    			while(a%7==0){
    				x[k++]=7;
    				a=a/7;}
    			while(a%11==0){
    				x[k++]=11;
    				a=a/11;}
    			while(a%13==0){
    				x[k++]=13;
    				a=a/13;}
    			while(a%17==0){
    				x[k++]=17;
    				a=a/17;}
    			while(a%19==0){
    				x[k++]=19;
    				a=a/19;}
    			while(a%23==0){
    				x[k++]=23;
    				a=a/23;}
    			while(a%29==0){
    				x[k++]=29;
    				a=a/29;}
    			while(a%31==0){
    				x[k++]=31;
    				a=a/31;}
    			while(a%37==0){
    				x[k++]=37;
    				a=a/37;}
    			while(a%41==0){
    				x[k++]=41;
    				a=a/41;}
    			while(a%43==0){
    				x[k++]=43;
    				a=a/43;}
    			while(a%47==0){
    				x[k++]=47;
    				a=a/47;}
    		    if(k>1)
    			{
    				printf("%d ",b);
    				for(j=0;j<k;j++)
    				{
    					if(j==k-1)
    						printf("%d",x[j]);
    					else
    						printf("%d ",x[j]);
    				}
    			    printf("\n");
    			}
    		}
    	}
    }
    

    C++ :

    #include <cstdio>
    #include <cmath>
    #include <vector>
    using namespace std;
    int main()
    {
    	//freopen("a.in","r",stdin);
    	//freopen("a.out","w",stdout);
    	int i, j, n, k, re, a[1001];
    	vector<int> v[1001];
    	scanf("%d",&re);
    	while(re--)
    	{
    		scanf("%d",&n);
    		k = 0;
    		for(int i = 0 ; i <= 100 ; i ++)
    			v[i].clear();
    		for(i = 2 ; i <= n ; i ++)
    		{
    			int m = i;
    			for(j = 0 ; j < k ; j ++)
    			{
    				if(m % a[j] == 0)
    				{
    					v[i].push_back(a[j]);
    					m /= a[j];
    					j = -1;
    				}
    			}
    			if(m != 1)
    				a[k++] = i;
    		}
    		for(i = 0 ; i <= n ; i ++)
    		{
    			if(v[i].size() > 0)
    			{
    				printf("%d",i);
    				for(int j = 0 ; j < v[i].size() ; j ++)
    				{
    					printf(" %d",v[i][j]);
    				}
    				printf("\n");
    			}
    		}
    	}
    	return 0;
    }	
    	
    
    
    • 1

    信息

    ID
    3261
    时间
    1000ms
    内存
    128MiB
    难度
    (无)
    标签
    递交数
    0
    已通过
    0
    上传者