全超时了,难道只能打表了吗,求dalao更好的办法。
查看原帖
全超时了,难道只能打表了吗,求dalao更好的办法。
790685
bluetored楼主2022/9/15 14:06

首先我用了最朴素的求素数的办法,每个数挨着试,把合数排掉,再用数组记录素数。然后,我用了个for循环嵌套,也就是一个素数乘另一个素数,然后输出第二个素数(因为第一个素数不断去尝试乘第二个素数,第二个素数会从头到尾循环一次,所以第二个素数肯定更大)。然后超时了!!!!!!!我也是刚学c不到一周,求一些更易懂的办法QAQ(做题越来越难了,我是不是应该先去把指针和字符串学完)

#include <stdio.h>
int main ()
{
	int n,d=1;
	int number [10000];
	int s=100000;
	scanf ("%d",&n);
	for (int i=2;i<s;i++)
    {
    	int p=1;
    	for(int b=2;b<i;b++)
    	{
    		if(i%b==0) {p=0;break;}
		}
		if(p==1) { number[d]=i;d++;}
	}
	for(int i=1;i<10000;i++)
	{
		int o=1;
		for (o=1;o<10000;o++)
		{
			if (number[i]*number[o]==n)
			{printf("%d",number[o]);goto out;}
		}
	}
    out: return 0;	
}
2022/9/15 14:06
加载中...