1 solutions

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

    C :

    #include<stdio.h>
    int isprime(int i)
    {
    	int j;
    	if(i == 0 || i == 1) return 0;
    	if(i == 2 || i == 3 || i == 5 || i == 7 || i == 11) return 1;
    	if(i%2 == 0 || i%3 == 0 || i%5 == 0 || i%7 == 0 || i%11 == 0) return 0;
    	for(j=12; j*j<=i;j++)
    	if(i%j==0)
    	return 0;
    	return 1;
    }
    int main()
    {
    	int a,b,c;
    	scanf("%d%d",&a,&b);
    	int i,j;
    	for(i=a;i<=b;i++)
    	{
    		printf("%d=",i);
    		if(isprime(i))
    		printf("%d\n",i);
    		else
    		{
    			for(j=2,c=i;;j++)
    			{
    				if(c%j==0)
    				{
    					printf("%d*",j);
    					c=c/j;
    					j=1;
    				}
    				if(isprime(c))
    				{
    					printf("%d\n",c);
    					break;
    				}
    			}
    		}
    	}
    }
    

    C++ :

    #include<iostream>
    #include<cmath>
    using namespace std;
    
    int is_prime(int n)
    {
    	for(int i = 2; i*i <= n; i++)
    	{
    		if(n % i == 0) 
    		{
    			return 0;
    		}
    	}
    	return 1;
    } 
    
    int prime[10000], count = 0;
    
    int main()
    {
        int a, b; 
        int flag = 0;
    	for(int i = 2; i <= 10000; i++)
    	{
    		if(is_prime(i)) prime[count++] = i;
    	}
    	cin >> a >> b;
    	for(int j = a; j <= b; j++)
    	{
    		flag = 0;
    		cout << j << "=";
    		int m = j;
    		for(int k = 0; k < count; k++)
    		{
    			while(m%prime[k] == 0)
    			{
    				m /= prime[k];
    				flag++;
    				if(flag == 1) cout << prime[k];
    				else cout << "*" << prime[k];
    			}
    		}
    		cout << endl; 
    	}
    	return 0;
    } 
    

    Pascal :

    program p23699;
     var a,b,i,j,n,t,p:longint;
     fj: array[1..100] of longint;
    begin
     readln(a,b);
     for i:= a to b do
      begin
       write(i,'=');
       n:=i;
       p:=0;
       t:=2;
       while(n>1) do
        begin
         while(n mod t=0)do
          begin
           inc(p);
           fj[p]:=t;
           n:=n div t;
          end;
          inc(t);
        end;
       for j:=1 to p do
        if j<p then
         write(fj[j],'*')
        else
         writeln(fj[j]);
      end;
    end.
    
    
    • 1

    【设计型】第11章:指针和数组 分解质因数(基础)

    Information

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