|
马上注册,结交更多好友,享用更多功能^_^
您需要 登录 才可以下载或查看,没有账号?立即注册
x
给出一个正整数n,请问它的最大质因数是多少?
我的代码如下:
#include<stdio.h>
int main()
{
int n,i,x,y,f[100],j=0;
_Bool flag=1;
for(i=n/2;i;i--)
{
if(!(n%i))
{
for(x=2;x<i;x++)
{
if(i%x==0)
{
flag=0;
}
}
}
if(flag)
{
printf("%d",i);
}
}
return 0;
}
不知道哪错了。。求大佬指正!!
本帖最后由 jackz007 于 2022-10-11 13:45 编辑
- #include<stdio.h>
- int main()
- {
- int n,i,x,y,f[100] , j=0 ;
- int flag ; // 用 int 就可以,免得麻烦
- scanf("%d" , & n) ;
- for(i = n / 2 ; i ; i --) {
- if(! (n % i)) {
- flag = 1 ; // 对于每一个 i 都需要事先假设其为素数
- for(x = 2 ; x < i ; x ++) {
- if(i % x == 0) {
- flag = 0 ;
- break ; // 确定 i 不是素数后,没有必要继续循环
- }
- }
- if(flag) {
- printf("%d\n" , i) ;
- break ; // 最大素数已经找到,也无需继续循环了
- }
- }
- }
- }
复制代码
这是我写的
- #include<stdio.h>
- int main(void)
- {
- int i , k , n ;
- scanf("%d" , & n) ;
- for(i = 2 , k = n ; i * i < k + 1 ;) {
- if(! (k % i)) k /= i ;
- else i ++ ;
- }
- printf("%d\n" , k) ;
- }
复制代码
递归函数版
- #include<stdio.h>
- int foo(const int n)
- {
- int i , r ;
- for(i = n / 2 ; i > 1 ; i --) {
- if(! (n % i)) {
- r = foo(i) ;
- break ;
- }
- }
- return (i == 1) ? n : r ;
- }
- int main(void)
- {
- int n ;
- scanf("%d" , & n) ;
- printf("%d\n" , foo(n)) ;
- }
复制代码
编译、运行实况:
- D:\[00.Exerciese.2022]\C>g++ -o x x.c
- D:\[00.Exerciese.2022]\C>x
- 1234567
- 9721
- D:\[00.Exerciese.2022]\C>
复制代码
|
|