當前位置:首頁 » 編程語言 » 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是否相等來得知是否是素數