#include
int main() {
int n=0;
printf("Please input a number n:");
scanf("%d",&n);
for(int i=2;i<n;++i) {
if(n%i==0)
printf("%d 不是素数",n);
break;
if(n%i!=0)
printf("%d 是素数",n);
break;
}
return 0;
}
if(n%i!=0)
printf("%d 是素数",n);
break;
只要满足这个条件,for循环就会跳出,当然不行。
bool IsPrime(int n) {
int i;
if (n < 2)
return false;
else
{
for (i = 2; i <= n / 2.0; i++)
if (n%i == 0)
{
return false;
}
return true;
}
}
这个是判断素数的程序
http://bbs.csdn.net/topics/390112352
C++程序,算法结构一样的
#include <iostream>
#include <cmath>
using namespace std;
int main()
{
for(int i=100;i<+200;++i)
{
int x=2;
while(x<=floor(sqrt(i))&&(i%x!=0))
++x;
if(x>floor(sqrt(i)))
cout << i << "\t";
}
return 0;
}
问题是你得理解什么是素数,一个数字不能被除了1和它本身以外任何数整除的数才算素数,而你的程序仅仅在循环判断了一个值而不能整除,就断定是素数,那么这个怎么能对呢。
for里面改为i++不然会少判断一种情况,只要第一个if判断条件一直不满足则才有可能成为素数也就是当判断到i=n-1的时候仍然不满足就是素数,所以我们只需要第二个if判断i是否等于n-1如果是就为素数然后break
#include
#include
int main(void)
{
int count, i, m, n, sum;
int repeat, ri;
int prime(int m);
scanf("%d", &repeat);
for(ri = 1; ri <= repeat; ri++){
scanf("%d%d", &m, &n);
sum=count=0;
for(i=m;i<=n;i++)
{
if(prime(i)==1)
{
count++;sum=sum+i;
}
}
printf("Count = %d, sum = %d\n", count, sum);
}
return 0;
}
int prime(int m)
{
int i;
if(m==1)
return 0;
for(i=2;i<=m-1;i++)
{
if(m%i==0) return 0;
}
return 1;
}
这是以前写的一个。希望对你有帮助
判断素数主要是从定义出发,定义:只能由1和它本身整除的是素数,你的代码
if(n%i!=0)
printf("%d 是素数",n);
break;
是错误的,这是以一概全,
#include <stdio.h>
int main()
{
int n;
while(~scanf("%d", &n))
{
if(n <= 1) puts("NO");
else
{
int flag = 0;
for(int i = 2; i < n; i++)
{
if(n % i == 0)
{
flag = 2;
break;
}
}
if(flag) puts("NO");
else puts("YES");
}
}
return 0;
}
这是我简单的代码,素数判断还有其他好多方法。
#include<stdio.h>
#include<stdlib.h>
int main() {
int n=0,i;
printf("Please input a number n:");
scanf("%d",&n);
for( i=2;i<n;++i) {
if(n%i==0)
{
printf("%d 不是素数\n",n);
break;
}
}
if(i>=n) printf("%d 是素数\n",n);
return 0;
}