分析:一遍遍循环,效率比较低,但可以通过减半和除偶来减少次数,但是依旧不是很理想,数论中有个定论是任意合数都可以由
几个质数乘的,但是目前还没想好怎么运用这个定论,所以将就一下。
PS:这个数肯定是合数,因为1不是质数,所以不可能是1和本身。
1 #include <stdio.h> 2 int main() 3 { 4 int n,i; 5 int j,x=0; 6 scanf("%d",&n); 7 for(i=(n/2);i>2;i--) //因为质因数肯定少与原数的一半,所以从一半开始 8 { 9 if(n%i==0&&i%2!=0) //排除偶数 10 { 11 for(j=3;j<i;j=j+2) 12 { 13 if(i%j==0) //若有其他因数,则不是质数 14 { 15 x=1; 16 break; 17 } 18 19 } 20 21 if(x==0) 22 break; 23 else 24 x=0; 25 } 26 } 27 printf("%d",i); 28 return 0; 29 }
时间: 2024-11-10 07:27:09