1
任意一个自然数n,输出不大于自然数n的素数,要求每行输出五个素数。
2
有一堆零件,数量在100-200个之间,4个零件分成一组则多2个,7个一组多3个,这堆零件总数是多少?
【1】
#include <stdio.h>
#include <stdbool.h>
int main() {
int n;
printf("请输入一个自然数n: ");
scanf("%d", &n);
int count = 0;
for (int i = 2; i <= n; i++) {
bool isPrime = true;
for (int j = 2; j * j <= i; j++) {
if (i % j == 0) {
isPrime = false;
break;
}
}
if (isPrime) {
printf("%d ", i);
count++;
if (count % 5 == 0) {
printf("\n");
}
}
}
return 0;
}
【2】
这是一个数学问题,可以用中国剩余定理来解决。根据题意,设零件总数为x,则有以下方程组:
x ≡ 2 (mod 4) x ≡ 3 (mod 7)
解这个方程组,我们可以得到x ≡ 10 (mod 28)。也就是说,零件总数是28的倍数再加10。在100-200之间符合条件的数只有138。
下面是一个用C语言编写的程序来解决这个问题:
#include <stdio.h>
int main()
{
int x;
for(x = 100; x <= 200; x++)
{
if(x % 4 == 2 && x % 7 == 3)
{
printf("零件总数为: %d\n", x);
break;
}
}
return 0;
}
1
#include <stdio.h>
int isPrime(int n) {
int i;
for(i=2; i<n; i++) {
if(n%i==0) return 0;
}
return 1;
}
int main() {
int n, count=0;
printf("n:");
scanf("%d", &n);
int i;
for(i=2; i<=n; i++) {
if(isPrime(i)) {
printf("%d\t", i);
count++;
if(count%5==0) printf("\n");
}
}
return 0;
}
2
#include <stdio.h>
int main() {
int n;
for (n = 100; n <= 200; n++) {
if (n % 4 == 2 && n % 7 == 3) {
printf("%d个\n", n);
break;
}
}
return 0;
}
不知道你这个问题是否已经解决, 如果还没有解决的话:先设定变量,由题可得正整数n(1 < n < 100)故设定变量num[100]。
根据题中描述共输入n个数字故利用设定变量i并使i<n后利用for循环完成输入。即
for(i=0;i<n;i++)
{
scanf("%d",&num[i]);
}
将输入的第一个数字赋值给min,即,
min = num[0];
利用for循环比较出最小的数并得到该数的位置即,
for(i=0;i<n;i++)
{
if(min>num[i])
{
min = num[i];
minsign = i;
}
}
利用赋值变量的方法改变最小的数字和第一个数字的位置即,
temp = num[0];
num[0] = min;
num[minsign] = temp;
最后利用循环输出换后的数组,并结束即
for(i=0;i<n;i++)
{
printf("%d “,num[i]);
}
printf(”\n");
return 0;
}
#include<stdio.h>
int main()
{
int i,n,num[100],min,minsign,temp;
scanf("%d",&n);
for(i=0;i<n;i++)
{
scanf("%d",&num[i]);
}
min = num[0];
for(i=0;i<n;i++)
{
if(min>num[i])
{
min = num[i];
minsign = i;
}
}
temp = num[0];
num[0] = min;
num[minsign] = temp;
for(i=0;i<n;i++)
{
printf("%d ",num[i]);
}
printf("\n");
return 0;
}