当前位置:首页 » 编程语言 » c语言中合数求法
扩展阅读
webinf下怎么引入js 2023-08-31 21:54:13
堡垒机怎么打开web 2023-08-31 21:54:11

c语言中合数求法

发布时间: 2023-07-06 03:29:51

‘壹’ c语言求1000个数之内的合数

#include <stdio.h>
int main()
{
int i,j;
for(i=4;i<=1000;i++)
for(j=2;j<=i/2;j++)
if(i%j==0)
{
printf("%d\t",i);
break;
}
getchar();
return 0;
}
这是我写的代码,应该正确的

‘贰’ c语言 合数的求法

#include<math.h>
#include<stdio.h>
void
main()
{
int
m,k,i,n=0;
for
(m=101;m<=200;m++)
{
k=(int)sqrt(m);
for(i=2;i<=k;i++)
{if(m%i==0)
{printf("%d
",m);
n=n+1;
if(n%8==0)
printf("\n");
break;
}
}
}
printf("\n%d\n",n);
}
200内的合数为79

‘叁’ c语言合数问题,哪位高人帮忙。好像我的算法结构就有问题。。。

//你的漏洞:
#include <stdio.h>
#define N 21
void main()
{
int i,n,m;
printf("请输入M值:");
scanf("%d",&m);
m++;

loop2:
for(i=2;i<m;i++)
{
if(m%i==0)//你的算法就是合数肯定进去处理
{
loop1: for(n=2;n<N;n++)
{
for(i=2;i<n;i++)//i和外面的i冲突了
{
if(n%i==0)
goto loop1;
}
if(m%n==0)
{
m++;//m++到素数的时候
goto loop2;
}
}
}
//m++到素数的时候,不会进if处理,最后得到的是大于输入的最小素数
}
printf("%d\n",m);
}
///////////////////////////////////////////////////////////
///////////////////////////////////////////////////////////
//在你基础上修改如下:
#include <stdio.h>
#define N 21
void main()
{
int i,j,n,m;
printf("请输入M值:");
scanf("%d",&m);
m++;

loop2:
for(i=2;i<m;i++)
{
if(m%i==0)
{
for(n=2;n<N;n++)//其实小于21的素数就8个,没必要for浪费资源
{
for(j=2;j<n;j++)//i和外面的i冲突了
{
if(n%j==0)
{
break;//修改,不能到loop1
}
}
if( j==n && (m%n==0) )//修改,j==n则素数
{
m++;
goto loop2;
}
}
break;
}
}

if ( i==m )//增加,m是素数继续
{
m++;
goto loop2;
}

printf("\n求得合数:%d\n",m);

//增加分析:
//不能有素数因子2 3 5 7 11 13 17 19
printf("\n\n合数%d的所有因子:\n",m);
for (i=2;i<m;i++)
{
if (m%i == 0)
{
printf("%-5d",i);
}
}
printf("\n\n输入20675看看\n");
}

‘肆’ c语言编程:合数分解

#include<stdio.h>
intmain()
{inti,k,n;
scanf("%d",&n);
for(i=2;i*i<=n;i++)
if(n%i==0)
{k=0;
while(n%i==0){k++;n/=i;}
if(k>1)printf("%d",i);
}
printf(" ");
return0;
}

‘伍’ c语言,求一个数的合数,所谓合数就是将一个数的各位合并相加直到只能是个位数为止

#include <stdio.h>
int main(){
long long int n;
int sum=0;
scanf("%lld",&n);
while(n){
sum+=n%10;
if(sum>9) sum%=9;
n/=10;
}
printf("%d",sum);
return 0;
}

‘陆’ c语言求素数合数

# include <stdio.h>
# include <math.h>

int main(void)
{
int m,i,k;
scanf("%d",&m);

k=(int)sqrt(m);

for(i=2;i<k;i++)
{
if(m%i==0)
break;//here
}
if(i==k)//here
{
printf("%d素数\n",m);
}
else
{
printf("%d合数\n",m);
}
return 0;
}

这个的思想是通过递增除
到整除的就跳出
也就是你的
if(m%i==0)
break;//here

如果是素数就不会有跳出,则最后的时候i已经增加到k值
所以最后通过判断i与k是否相等来得知是否是素数