1 solutions

  • 0
    @ 2024-12-10 21:47:36

    C :

    #include<stdio.h>
    #include<string.h>
    
    int is_prime(int n)
    {
    	for(int i = 2; i*i <= n; i++)
    	{
    		if(n % i == 0) 
    		{
    			return 0;
    		}
    	}
    	return 1;
    } 
    
    int prime[100], count = 0;
    
    int main()
    {
    	int n, p[100];
    	for(int i = 2; i <= 100; i++)
    	{
    		if(is_prime(i)) prime[count++] = i;
    	}
    	scanf("%d", &n);
    	printf("%d! = ", n);
    	memset(p, 0, sizeof(p));
    	int maxp = 0;
    	for(int i = 1; i <= n; i++)
    	{
    		int m = i;
    		for(int j = 0; j < count; j++)
    		{
    			while(m % prime[j] == 0)
    			{
    				m /= prime[j];
    				p[j]++;
    				if(j > maxp) maxp = j;
    			}
    		}
    	}
    	for(int i = 0; i <= maxp; i++)
    	{
    		printf(" %d", p[i]);
    	}
    	printf("\n");
    	return 0;
    }
    
    • 1

    【设计型】第11章:指针和数组 因子和阶乘

    Information

    ID
    488
    Time
    1000ms
    Memory
    128MiB
    Difficulty
    (None)
    Tags
    # Submissions
    0
    Accepted
    0
    Uploaded By