原题来自:NOIP 2012 普及组
已知正整数 n 是两个不同的质数的乘积,试求出较大的那个质数。
#include<stdio.h>
#include<math.h>
int main()
{
long n,p,q,s;
scanf("%ld",&n);
int i=2;
while(1)
{
if(n%i==0){
p=i;
q=n/p;
if(q>p)
s=q;
else
s=p;
printf("%ld",s);
break;}
else
{
i++;
}
}
return 0;
}
这里我一直遇到的问题是时间超时,相比于for循环,while循环所花费的时间比较高,但是这道题目我在进行编程的时候发现,for循环无法满足我的要求,也就是说,我不会用,因为在循环里面有一种情况下,是不需要循环数+1,然后直接break,进行输出计算的.
所以后面我使用while循环,而这里最关的地方是while循环的时间很长的,所以必须在循环里面设置有break,也就是说,一旦当程序了解到到达我需要输出的那一个值,立马break出来,这样可以在不占用内存的情况下,使得时间最短.